Python中Tkinter組件Button的具體使用
簡介
Button(按鈕)組件用于實現(xiàn)各種各樣的按鈕。Button 組件可以包含文本或圖像,你可以將一個 Python 的函數(shù)或方法與之相關(guān)聯(lián),當(dāng)按鈕被按下時,對應(yīng)的函數(shù)或方法將被自動執(zhí)行。
Button 組件僅能顯示單一字體的文本,但文本可以跨越多行。另外,還可以為其中的個別字符加上下劃線(例如用于表示鍵盤快捷鍵)。默認(rèn)情況下,tab 按鍵被用于在按鈕間切換。
何時使用 Button 組件?
簡而言之,Button 組件是用于讓用戶說:“干!”,通過按鈕上的文字或圖標(biāo)讓用戶清楚按下去是干什么用的。Button 組件常常被用于工具欄、應(yīng)用程序窗口、和表示接受或拒絕的對話框。Checkbutton 和 Radiobutton
Checkbutton 和 Radiobutton 組件 更適合做數(shù)據(jù)輸入按鈕使用。
用法
普通的按鈕是非常簡單易用的。你所需要做的就是指定 Button 的內(nèi)容(文本、位圖或者圖片),并且關(guān)聯(lián)當(dāng)按鈕被按下時應(yīng)該調(diào)用的函數(shù)或方法:
import tkinter as tk master = tk.Tk() def callback(): print("我被調(diào)用了!") b = tk.Button(master, text="執(zhí)行", command=callback) b.pack() master.mainloop()
>>>
=============== RESTART===============
我被調(diào)用了!
如果一個按鈕沒有相關(guān)聯(lián)的函數(shù)或方法,那么它就形同虛設(shè)。你可能在開發(fā)程序的過程中會使用到這樣的按鈕,在這種情況下,更好的方法是禁用這些按鈕,從而避免導(dǎo)致你的測試用戶產(chǎn)生疑惑。
b = tk.Button(master, text="不執(zhí)行", state="disabled")
如果你沒有指定 Label 的大小,那么 Label 的尺寸是正好可以容納其內(nèi)容而已。你可以使用 padx 和 pady 選項在 Button 的內(nèi)容和邊框間添加額外的間距。
當(dāng)然你可以通過 height 和 width 選項來明確設(shè)置 Button 的大?。喝绻泔@示的是文本,那么這兩個選項是以文本單元為單位定義 Button 的大?。蝗绻泔@示的是位圖或者圖像,那么它們以像素為單位(或者其他屏幕單元)定義 Button 大小。
對于內(nèi)容為文本的 Button 組件,你可以使用像素為單位指定 Buttton 的尺寸,不過這需要一些技巧。這里提供一個方法給大家參考(還有其它方法實現(xiàn)):
f = tk.Frame(master, height=64, width=64) f.pack_propagate(0) f.pack() b = tk.Button(f, text="確定", command=callback) b.pack(fill="both", expand=1)
Button 可以顯示多行文本,你可以直接使用換行符或使用 wraplength 選項來實現(xiàn)。當(dāng)文本換行的時候,你可以使用 anchor 和 justify 以及 padx 選項來使得文本如你所希望的顯示出來:
longtext = """ 我明明只是一個按鈕, 作為按鈕并不需要太多 的文字用于告訴用戶當(dāng) 我被按下的時候會發(fā)生 什么事情,但我為什么 這么長? """ b = tk.Button(master, text=longtext, anchor="w", justify="left", padx=2, command=callback) b.pack()
為了使一個普通的按鈕保持被“按下”的狀態(tài),例如你希望通過某種方式實現(xiàn)一個工具箱(像 Photoshop 左側(cè)的工具欄按鈕,按下的時候他保持凹下去,說明你正在使用此工具),你可以簡單的將 relief 選項的默認(rèn)值 "raised" 改為 "sunken":
b.config(relief="raised")
你或許也希望修改背景色。不過更好的方法是使用 Checkbutton 和 Radiobutton 組件,并把它們的 indicatoron 選項設(shè)置為 False:
b = tk.Checkbutton(master, image=bold, variable=var, indicatoron=False)
在早期版本的 Tkinter 中,image 選項會覆蓋 text 選項。也就是說如果你同時指定了兩個選項,那么只有 image 選項會被顯示。但在新的 Tkinter 中,你可以使用 compound 選項設(shè)置二者的混合模式。例如下邊就是通過設(shè)置 compound="center" 使得文字位于圖片的上方(重疊顯示):
photo = tk.PhotoImage(file = 'botton.gif') b = tk.Button(master, text="點我", font = 20, image = photo, compound = "center") b.pack()
通過 "left","right","top" 和 "bottom" 則可以設(shè)置文字在圖像的旁邊顯示:
b = tk.Button(master, text="點它 ->", font = 20, image = photo, compound = "right")
參數(shù)
Button(master=None, **options) (class)
master -- 父組件
**options -- 組件選項,下方表格詳細(xì)列舉了各個選項的具體含義和用法:
選項 | 含義 |
activebackground | 1. 設(shè)置當(dāng) Button 處于活動狀態(tài)(通過 state 選項設(shè)置狀態(tài))的背景色 2. 默認(rèn)值由系統(tǒng)指定 |
activeforeground | 1. 設(shè)置當(dāng) Button 處于活動狀態(tài)(通過 state 選項設(shè)置狀態(tài))的前景色 2. 默認(rèn)值由系統(tǒng)指定 |
anchor | 1. 控制文本(或圖像)在 Button 中顯示的位置 2. "n", "ne", "e", "se", "s", "sw", "w", "nw", 或者 "center" 來定位(ewsn 代表東西南北,上北下南左西右東) |
background | 1. 設(shè)置背景顏色 2. 默認(rèn)值由系統(tǒng)指定 |
bg | 跟 background 一樣 |
bitmap | 1. 指定顯示到 Button 上的位圖 2. 如果指定了 image 選項,則該選項被忽略 |
borderwidth | 1. 指定 Button 的邊框?qū)挾?br />2. 默認(rèn)值由系統(tǒng)指定,通常是 1 或 2 像素 |
bd | 跟 borderwidth 一樣 |
compound | 1. 控制 Button 中文本和圖像的混合模式 3. 如果該選項設(shè)置為 "center",文本顯示在圖像上(文本重疊圖像) |
cursor | 1. 指定當(dāng)鼠標(biāo)在 Button 上飄過的時候的鼠標(biāo)樣式 2. 默認(rèn)值由系統(tǒng)指定 |
default | 1. 如果設(shè)置該選項("normal"),該按鈕會被繪制成默認(rèn)按鈕 2. Tkinter 會根據(jù)平臺的具體指標(biāo)來繪制(通常就是繪制一個額外的邊框) 2. 默認(rèn)值是 "disable" |
disabledforeground | 1. 指定當(dāng) Button 不可用的時候前景色的顏色 2. 默認(rèn)值由系統(tǒng)指定 |
font | 1. 指定 Button 中文本的字體 2. 一個 Button 只能設(shè)置一種字體 3. 默認(rèn)值由系統(tǒng)指定 |
foreground | 1. 設(shè)置 Button 的文本和位圖的顏色 2. 默認(rèn)值由系統(tǒng)指定 |
fg | 跟 foreground 一樣 |
height | 1. 設(shè)置 Button 的高度 2. 如果 Button 顯示的是文本,那么單位是文本單元 3. 如果 Button 顯示的是圖像,那么單位是像素(或屏幕單元) 4. 如果設(shè)置為 0 或者干脆不設(shè)置,那么會自動根據(jù) Button 的內(nèi)容計算出高度 |
highlightbackground | 1. 指定當(dāng) Button 沒有獲得焦點的時候高亮邊框的顏色 2. 默認(rèn)值由系統(tǒng)指定 |
highlightcolor | 1. 指定當(dāng) Button 獲得焦點的時候高亮邊框的顏色 2. 默認(rèn)值由系統(tǒng)指定 |
highlightthickness | 1. 指定高亮邊框的寬度 2. 默認(rèn)值是 0(不帶高亮邊框) |
image | 1. 指定 Button 顯示的圖片 2. 該值應(yīng)該是 PhotoImage,BitmapImage,或者能兼容的對象 3. 該選項優(yōu)先于 text 和 bitmap 選項 |
justify | 1. 定義如何對齊多行文本 2. 使用 "left","right" 或 "center" |
overrelief | 1. 定義當(dāng)鼠標(biāo)飄過時 Button 的樣式 2. 如果不設(shè)置,那么總是使用 relief 選項指定的樣式 |
padx | 指定 Button 水平方向上的額外間距(內(nèi)容和邊框間) |
pady | 指定 Button 垂直方向上的額外間距(內(nèi)容和邊框間) |
relief | 1. 指定邊框樣式 2. 通常當(dāng)按鈕被按下時是 "sunken",其他時候是 "raised" 3. 另外你還可以設(shè)置 "groove"、"ridge" 或 "flat" 4. 默認(rèn)值是 "raised" |
repeatdelay | 見下方 repeatinterval 選項的描述 |
repeatinterval | 1. 通常當(dāng)用戶鼠標(biāo)按下按鈕并釋放的時候系統(tǒng)認(rèn)為是一次點擊動作。如果你希望當(dāng)用戶持續(xù)按下按鈕的時候(沒有松開),根據(jù)一定的間隔多次觸發(fā)按鈕,那么你可以設(shè)置這個選項。 2. 當(dāng)用戶持續(xù)按下按鈕的時候,經(jīng)過 repeatdelay 時間后,每 repeatinterval 間隔就觸發(fā)一次按鈕事件。 3. 例如設(shè)置 repeatdelay=1000,repeatinterval=300,則當(dāng)用戶持續(xù)按下按鈕,在 1 秒的延遲后開始每 300 毫秒觸發(fā)一次按鈕事件,直到用戶釋放鼠標(biāo)。 |
state | 1. 指定 Button 的狀態(tài) 2. 默認(rèn)值是 "normal" 3. 另外你還可以設(shè)置 "active" 或 "disabled" |
takefocus | 1. 指定使用 Tab 鍵可以將焦點移到該 Button 組件上(這樣按下空格鍵也相當(dāng)于觸發(fā)按鈕事件) 2. 默認(rèn)是開啟的,可以將該選項設(shè)置為 False 避免焦點在此 Button 上 |
text | 1. 指定 Button 顯示的文本 2. 文本可以包含換行符 3. 如果設(shè)置了 bitmap 或 image 選項,該選項則被忽略 |
textvariable | 1. Button 顯示 Tkinter 變量(通常是一個 StringVar 變量)的內(nèi)容 2. 如果變量被修改,Button 的文本會自動更新 |
underline | 1. 跟 text 選項一起使用,用于指定哪一個字符畫下劃線(例如用于表示鍵盤快捷鍵) 2. 默認(rèn)值是 -1 3. 例如設(shè)置為 1,則說明在 Button 的第 2 個字符處畫下劃線 |
width | 1. 設(shè)置 Button 的寬度 2. 如果 Button 顯示的是文本,那么單位是文本單元 3. 如果 Button 顯示的是圖像,那么單位是像素(或屏幕單元) 4. 如果設(shè)置為 0 或者干脆不設(shè)置,那么會自動根據(jù) Button 的內(nèi)容計算出寬度 |
wraplength | 1. 決定 Button 的文本應(yīng)該被分成多少行 2. 該選項指定每行的長度,單位是屏幕單元 3. 默認(rèn)值是 0 |
方法
flash()
-- 刷新 Button 組件,該方法將重繪 Button 組件若干次(在 "active" 和 "normal" 狀態(tài)間切換)。
invoke()
-- 調(diào)用 Button 中 command 選項指定的函數(shù)或方法,并返回函數(shù)的返回值。
-- 如果 Button 的state(狀態(tài))是 "disabled"(不可用)或沒有指定 command 選項,則該方法無效。
到此這篇關(guān)于Python中Tkinter組件Button的具體使用的文章就介紹到這了,更多相關(guān)Python Tkinter Button內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Centos環(huán)境部署django項目的全過程(永久復(fù)用)
Django是一款針對Python環(huán)境的WEB開發(fā)框架,能夠幫助我們構(gòu)架快捷,下面這篇文章主要給大家介紹了關(guān)于Centos環(huán)境部署django項目的相關(guān)資料,需要的朋友可以參考下2022-10-10Python面向?qū)ο笾惡蛯ο髮傩缘脑鰟h改查操作示例
這篇文章主要介紹了Python面向?qū)ο笾惡蛯ο髮傩缘脑鰟h改查操作,結(jié)合實例形式分析了Python面向?qū)ο笙嚓P(guān)的類與對象屬性常見操作技巧,需要的朋友可以參考下2018-12-12Pytorch+PyG實現(xiàn)GraphConv過程示例詳解
這篇文章主要為大家介紹了Pytorch+PyG實現(xiàn)GraphConv過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04Python深度學(xué)習(xí)實戰(zhàn)PyQt5窗口切換的堆疊布局示例詳解
本文以堆疊窗口控件為例,詳細(xì)介紹堆疊布局的界面設(shè)計和程序?qū)崿F(xiàn)過程,通過案例帶小白創(chuàng)建一個典型的堆疊布局多窗口切換程序2021-10-10