已獲原做者受權. 原系列地址: Python Tkinter
單選按鈕是一種可在多個預先定義的選項中選擇出一項的 Tkinter 控件. 單選按鈕可顯示文字或圖片. 顯示文字時只能使用預設字體. 該控件能夠綁定一個 Python 函數或方法, 當單選按鈕被選擇時, 該函數或方法將被調用.
單選按鈕 (Radio Button) 這個名字來源於收音機 (Radio) 上的調頻按鈕, 這些按鈕用來選擇特定波段或預設電臺. 若是一個按鈕被按下, 其餘同類的按鈕就會彈起, 即同時只有一個按鈕可被按下.
一組單選按鈕控件和同一個變量關聯. 點擊其中一個單選按鈕將把這個變量設爲某個預約義的值.php
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()
上面代碼輸出以下窗口:python
不少狀況下, 單選按鈕項目將不止是兩項. 在選項不少時, 逐個生成單選項的方法就顯得太笨了. 解決辦法以下例中所示, 咱們預先定義了一個 list, 其元素中包含了按鈕文本及其對應的選項值. 這樣咱們就能夠用一個循環來創建這組單選按鈕了.segmentfault
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
選項設置爲 0 便可達到該目的: 這表示單選按鈕不會有額外的單選指示器.
咱們將上例中 Radiobutton 的建立代碼修改以下:oop
Radiobutton(root, text=txt, indicatoron = 0, width = 20, padx = 20, variable=v, command=ShowChoice, value=val).pack(anchor=W)
在上面的代碼中, 咱們使用了 indicatoron
參數 和 width
參數. 上例運行顯示以下:佈局
全系列:
[譯][Tkinter 教程01] 入門: Label 控件
[譯][Tkinter 教程02] Message 控件
[譯][Tkinter 教程03] Button 控件
[譯][Tkinter 教程04] Variable 類
[譯][Tinkter 教程05] Radiobutton 控件
[譯][Tkinter 教程06] Checkbox 控件
[譯][Tkinter 教程07] Entry 控件
[譯][Tkinter 教程08] Canvas 圖形繪製
[譯][Tkinter 教程09] Scale 控件
[譯][Tkinter 教程10] Text 控件
[譯][Tkinter 教程11] 對話框和消息框
[譯][Tkinter 教程12] 佈局管理 (Pack Place Grid)
[譯][Tkinter 教程13] Mastermind 遊戲
[譯][Tkinter 教程14] menu 菜單
[譯][Tkinter 教程15] event 事件綁定
譯者水平有限, 若有疏漏, 歡迎指正.
已得到原做者受權. 原文地址: Radiobuttons