原系列地址: Python Tkinter
Radio Buttons
單選按鈕是一種可在多個預(yù)先定義的選項中選擇出一項的 Tkinter 控件. 單選按鈕可顯示文字或圖片. 顯示文字時只能使用預(yù)設(shè)字體. 該控件可以綁定一個 Python 函數(shù)或方法, 當單選按鈕被選擇時, 該函數(shù)或方法將被調(diào)用.
單選按鈕 (Radio Button) 這個名字來源于收音機 (Radio) 上的調(diào)頻按鈕, 這些按鈕用來選擇特定波段或預(yù)設(shè)電臺. 如果一個按鈕被按下, 其他同類的按鈕就會彈起, 即同時只有一個按鈕可被按下.
一組單選按鈕控件和同一個變量關(guān)聯(lián). 點擊其中一個單選按鈕將把這個變量設(shè)為某個預(yù)定義的值.
簡單例子
from Tkinter import *
root = Tk()
v = IntVar()
Label(root,
text="""Choose a
programming language:""",
justify = LEFT,
padx = 20).pack()
Radiobutton(root,
text="Python",
padx = 20,
variable=v,
value=1).pack(anchor=W)
Radiobutton(root,
text="Perl",
padx = 20,
variable=v,
value=2).pack(anchor=W)
mainloop()
上面代碼輸出如下窗口:
改進例子
很多情況下, 單選按鈕項目將不止是兩項. 在選項很多時, 逐個生成單選項的方法就顯得太笨了. 解決辦法如下例中所示, 我們預(yù)先定義了一個 list, 其元素中包含了按鈕文本及其對應(yīng)的選項值. 這樣我們就可以用一個循環(huán)來建立這組單選按鈕了.
from Tkinter import *
root = Tk()
v = IntVar()
v.set(1) # initializing the choice, i.e. Python
languages = [
("Python",1),
("Perl",2),
("Java",3),
("C++",4),
("C",5)
]
def ShowChoice():
print v.get()
Label(root,
text="""Choose your favourite
programming language:""",
justify = LEFT,
padx = 20).pack()
for txt, val in languages:
Radiobutton(root,
text=txt,
padx = 20,
variable=v,
command=ShowChoice,
value=val).pack(anchor=W)
mainloop()
上例運行后將顯示如下窗口:
指示器
除了使用默認的空心圓形作為選項條目, 我們也可以用一個文本框來展示選項. 將 indicatoron
選項設(shè)置為 0 即可達到該目的: 這表示單選按鈕不會有額外的單選指示器.
我們將上例中 Radiobutton 的創(chuàng)建代碼修改如下:
Radiobutton(root,
text=txt,
indicatoron = 0,
width = 20,
padx = 20,
variable=v,
command=ShowChoice,
value=val).pack(anchor=W)
在上面的代碼中, 我們使用了 indicatoron
參數(shù) 和 width
參數(shù). 上例運行顯示如下:
譯者水平有限, 如有疏漏, 歡迎指正.
已獲得原作者授權(quán). 原文地址: Radiobuttons