單選按鈕部件的建立及其選項
每個部件都包含兩部份, 指示器 indicator 及標籤 label. 好幾個這樣的部件組成一群, 設定為同一個控制變數 (IntVar 或 StringVar)
import tkinter as tk
parent = tk.Tk()
radio_button = tk.Radiobutton(parent, option, ...)
選項 |
說明 |
activebackground |
active 時的背景色 |
activeforeground |
active 時的前景色 |
anchor |
部件定位點,內定為 CENTER |
bg or background |
背景色,點陣圖時則為顏色值 0 的顏色 |
bitmap |
點陣圖 |
bd or borderwidth |
框的寛度, 內定為 2 點素 |
command |
單選按鈕部件狀態改變時呼叫的程式 |
compound |
圖與文字共用時,圖相對於文字的位置. LEFT/RIGHT/TOP/BOTTOM/CENTER, 內定為 None |
cursor |
當滑鼠移到部件時,所顯示的滑鼠圖示 |
disabledforeground |
disabled 時的前景色 |
font |
文字字型 |
fg or foreground |
前景色,點陣圖時則為顏色值 1 的顏色 |
height |
文字行數 |
highlightbackground |
非聚焦時的聚焦顏色 |
highlightcolor |
聚焦時的聚焦顏色 |
highlightthickness |
聚焦厚度,內定 1, 0 則無 |
image |
圖片 |
indicatoron |
是否顯示指示器, 不顯示時, 標籤會變成一個按鈕 |
justify |
多行文字的對齊方式,LEFT/RIGHT/CENTER |
offrelief |
當 indicatoron=False, 標籤按鈕的花邊樣式, 內定為 RAISED |
overrelief |
當滑鼠移到部件上方時, 所顯示的花邊樣式 |
padx |
水平間距,內定為 1 點素 |
pady |
垂直間距,內定為 1 點素 |
relief |
花邊樣式,內定為 FLAT |
selectcolor |
部件選定時的顏色, 內定為紅色 |
selectimage |
部件選定時的圖片 |
state |
部件狀態, 內定為 NORMAL / ACTIVE / DISABLED |
takefocus |
TAB 鍵在部件是否會迴圈焦點,1 則會,內定為空字串,則僅在具有鍵繫結下迴圈焦點 |
text |
文字字串,使用 \n 分行 |
textvariable |
文字字串變數 |
underline |
設定下底線的位置,內定 -1 為無 |
value |
該單選按鈕部件的選定值 |
variable |
單選按鈕部件群的選定變數 |
width |
文字寛度,內定為顯示文字或圖片的尺寸 |
wraplength |
文字分行寛度,單位為字數 |
單選按鈕部件的方法
方法 |
說明 |
deselect() |
不選擇該部件 |
flash() |
在 ACTIVE 的顏色和 NORMAL 顏色之間閃爍切換 |
invoke() |
單擊按鈕,返回回撥的返回值 |
select() |
選擇該部件 |
範例視窗及程式碼
import tkinter as tk
def update(i):
label.configure(text=f"You select '{texts[i]}' and value is {values[i]}")
root = tk.Tk()
root.wm_title("Radiobutton Demo")
font = ('Courier New', 20, 'bold')
texts = ['Cat', 'Dog', 'Pig']
values = [0, 1, 99]
select = tk.IntVar()
select.set(99)
widget = [None]*len(texts)
for i, (t, v) in enumerate(zip(texts, values)):
widget[i] = tk.Radiobutton(
text=t, value=v, font=font, variable=select,
command=lambda index=i: update(index))
widget[i].grid(row=0, column=i)
label = tk.Label(text='', width=40, font=font)
label.grid(row=1, column=0, columnspan=len(texts))
root.mainloop()
本作品採用《CC 協議》,轉載必須註明作者和本文連結