Tkinter (15) 單選按鈕部件 Radiobutton

Jason990420發表於2020-08-12

單選按鈕部件的建立及其選項

每個部件都包含兩部份, 指示器 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() 選擇該部件

範例視窗及程式碼

Python

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 協議》,轉載必須註明作者和本文連結

Jason Yang

相關文章