Tkinter 元件詳解(三):Checkbutton
Tkinter 元件詳解之Checkbutton
Checkbutton(多選按鈕)元件用於實現確定是否選擇的按鈕。Checkbutton 元件可以包含文字或影象,你可以將一個 Python 的函式或方法與之相關聯,當按鈕被按下時,對應的函式或方法將被自動執行。
Checkbutton 元件僅能顯示單一字型的文字,但文字可以跨越多行。另外,還可以為其中的個別字元加上下劃線(例如用於表示鍵盤快捷鍵)。預設情況下,tab 按鍵被用於在按鈕間切換。
何時使用 Checkbutton 元件?
Checkbutton 元件被用於作為二選一的按鈕(通常為選擇“開”或“關”的狀態),當你希望表達“多選多”選項的時候,可以將一系列 Checkbutton 組合起來使用。
但是處理“多選一”的問題,還是交給 Radiobutton 和 Listbox 元件來實現吧。
用法
(參考 Button 元件的用法)
使用 Checkbutton,你必須建立一個 Tkinter 變數用於存放按鈕的狀態:
from Tkinter import *
master = Tk()
var = IntVar()
c = Checkbutton(master, text="我是帥鍋", variable=var)
c.pack()
mainloop()
預設情況下,variable 選項設定為 1 表示選中狀態,反之設定為 0。你可以使用 onvalue 和 offvalue 選項修改它們的值,例如下邊程式碼,只要 var 被設定為“T”即選中狀態,設定為“F”則相反:
var = tk.StringVar()
var.set("T")
c = tk.Checkbutton(root, text="你喜歡Python嗎", variable=var, onvalue="T", offvalue="F")
c.pack()
如果你需要同時跟蹤 variable 選項以及 Checkbutton 元件物件,你不妨可以試試將兩者結合起來(下邊在 CheckButton 元件物件中新建一個 var 變數,存放 variable 的值 v):
v = tk.IntVar() c = tk.Checkbutton(master, text="加特技", variable=v) c.var = v
如果你的 Tkinter 程式碼是放在類中的(在實際程式設計中你就應該這麼幹),那麼將 variable 選項的值作為屬性儲存可能是更好的選擇:
def __init__(self, master):
self.var = tk.IntVar()
c = tk.Checkbutton(master, text="DUANG~", variable=self.var, command=self.cb)
c.pack()
def cb(self, event):
print "variable is", self.var.get()
引數
Checkbutton(master=None, **options) (class)
master -- 父元件
**options -- 元件選項,下方表格詳細列舉了各個選項的具體含義和用法:
選項 | 含義 |
activebackground | 1. 設定當 Checkbutton 處於活動狀態(通過 state 選項設定狀態)的背景色 2. 預設值由系統指定 |
activeforeground | 1. 設定當 Checkbutton 處於活動狀態(通過 state 選項設定狀態)的前景色 2. 預設值由系統指定 |
anchor | 1. 控制文字(或影象)在 Checkbutton 中顯示的位置 2. "n", "ne", "e", "se", "s", "sw", "w", "nw", 或者 "center" 來定位(ewsn 代表東西南北,上北下南左西右東) 3. 預設值是 "center" |
background | 1. 設定背景顏色 2. 預設值由系統指定 |
bg | 跟 background 一樣 |
bitmap | 1. 指定顯示到 Checkbutton 上的點陣圖 2. 如果指定了 image 選項,則該選項被忽略 |
borderwidth | 1. 指定 Checkbutton 的邊框寬度 2. 預設值由系統指定,通常是 1 或 2 畫素 |
bd | 跟 borderwidth 一樣 |
command | 1. 指定於該按鈕相關聯的函式或方法 2. 當按鈕被按下時由 Tkinter 自動呼叫對應的函式或方法 3. 如果不設定此選項,那麼該按鈕被按下後啥事兒也不會發生 |
compound | 1. 控制 Checkbutton 中文字和影象的混合模式 2. 預設情況下,如果有指定點陣圖或圖片,則不顯示文字 3. 如果該選項設定為 "center",文字顯示在影象上(文字重疊影象) 4. 如果該選項設定為 "bottom","left","right" 或 "top",那麼影象顯示在文字的旁邊(如 "bottom",則影象在文字的下方) 5. 預設值是 NONE |
cursor | 1. 指定當滑鼠在 Checkbutton 上飄過的時候的滑鼠樣式 2. 預設值由系統指定 |
disabledforeground | 1. 指定當 Checkbutton 不可用的時候前景色的顏色 2. 預設值由系統指定 |
font | 1. 指定 Checkbutton 中文字的字型 2. 一個 Checkbutton 只能設定一種字型 3. 預設值由系統指定 |
foreground | 1. 設定 Checkbutton 的文字和點陣圖的顏色 2. 預設值由系統指定 |
fg | 跟 foreground 一樣 |
height | 1. 設定 Checkbutton 的高度 2. 如果 Checkbutton 顯示的是文字,那麼單位是文字單元 3. 如果 Checkbutton 顯示的是影象,那麼單位是畫素(或螢幕單元) 4. 如果設定為 0 或者乾脆不設定,那麼會自動根據 Checkbutton 的內容計算出高度 |
highlightbackground | 1. 指定當 Checkbutton 沒有獲得焦點的時候高亮邊框的顏色 2. 預設值由系統指定,通常是標準背景顏色 |
highlightcolor | 1. 指定當 Checkbutton 獲得焦點的時候高亮邊框的顏色 2. 預設值由系統指定 |
highlightthickness | 1. 指定高亮邊框的寬度 2. 預設值是 1 |
image | 1. 指定 Checkbutton 顯示的圖片 2. 該值應該是 PhotoImage,BitmapImage,或者能相容的物件 3. 該選項優先於 text 和 bitmap 選項 |
indicatoron | 1. 指定前邊作為選擇的小方塊是否繪製 2. 預設是繪製的 3. 該選項會影響到按鈕的樣式,如果設定為 False,則點選後該按鈕變成 "sunken"(凹陷),再次點選變為 "raised"(凸起) |
justify | 1. 定義如何對齊多行文字 2. 使用 "left","right" 或 "center" 3. 注意,文字的位置取決於 anchor 選項 4. 預設值是 "center" |
offvalue | 1. 預設情況下,variable 選項設定為 1 表示選中狀態,反之設定為 0 2. 設定 offvalue 的值可以自定義未選中狀態的值(詳見上方用法舉例) |
onvalue | 1. 預設情況下,variable 選項設定為 1 表示選中狀態,反之設定為 0 2. 設定 onvalue 的值可以自定義選中狀態的值(詳見上方用法舉例) |
padx | 1. 指定 Checkbutton 水平方向上的額外間距(內容和邊框間) 2. 預設值是 1 |
pady | 1. 指定 Checkbutton 垂直方向上的額外間距(內容和邊框間) 2. 預設值是 1 |
relief | 1. 指定邊框樣式 2. 該值通常是 "flat",除非你設定 indicatoron 選項為 False 3. 如果 indicatoron 為 False,你還可以設定 "sunken","raised","groove" 或 "ridge" |
selectcolor | 1. 選擇框的顏色(就是打勾勾的那個正方形小框框) 2. 預設值由系統指定 |
selectimage | 1. 設定當 Checkbutton 為選中狀態的時候顯示的圖片 2. 如果沒有指定 image 選項,該選項被忽略 |
state | 1. 指定 Checkbutton 的狀態 2. 預設值是 "normal" 3. 另外你還可以設定 "active" 或 "disabled" |
takefocus | 1. 如果是 True,該元件接受輸入焦點(使用者可以通過 tab 鍵將焦點轉移上來) 2. 預設值是 False |
text | 1. 指定 Checkbutton 顯示的文字 2. 文字可以包含換行符 3. 如果設定了 bitmap 或 image 選項,該選項則被忽略 |
textvariable | 1. Checkbutton 顯示 Tkinter 變數(通常是一個 StringVar 變數)的內容 2. 如果變數被修改,Checkbutton 的文字會自動更新 |
underline | 1. 跟 text 選項一起使用,用於指定哪一個字元畫下劃線(例如用於表示鍵盤快捷鍵) 2. 預設值是 -1 3. 例如設定為 1,則說明在 Checkbutton 的第 2 個字元處畫下劃線 |
variable | 1. 將 Checkbutton 跟一個 Tkinter 變數關聯 2. 當按鈕按下時,該變數在 onvalue 和 offvalue 之間切換 3. 這個切換的過程是完全自動的 |
width | 1. 設定 Checkbutton 的寬度 2. 如果 Checkbutton 顯示的是文字,那麼單位是文字單元 3. 如果 Checkbutton 顯示的是影象,那麼單位是畫素(或螢幕單元) 4. 如果設定為 0 或者乾脆不設定,那麼會自動根據 Checkbutton 的內容計算出寬度 |
wraplength | 1. 決定 Checkbutton 的文字應該被分成多少行 2. 該選項指定每行的長度,單位是螢幕單元 3. 預設值是 0 |
方法
deselect()
-- 取消 Checkbutton 元件的選中狀態,也就是設定 variable 為 offvalue。
flash()
-- 重新整理 Checkbutton 元件,該方法將重繪 Checkbutton 元件若干次(在"active" 和 "normal" 狀態間切換)。
invoke()
-- 呼叫 Checkbutton 中 command 選項指定的函式或方法,並返回函式的返回值。
-- 如果 Checkbutton 的state(狀態)"disabled"是 (不可用)或沒有指定 command 選項,則該方法無效。
select()
-- 將 Checkbutton 元件設定為選中狀態,也就是設定 variable 為 onvalue。
toggle()
-- 切換 Checkbutton 元件的狀態(選中 -> 未選中 / 未選中 -> 選中)。