[譯][Tinkter 教程05] Radiobutton 控件

已獲原做者受權. 原系列地址: Python Tkinter

Radio Buttons

單選按鈕是一種可在多個預先定義的選項中選擇出一項的 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()

上面代碼輸出以下窗口:
圖1python

改進例子

不少狀況下, 單選按鈕項目將不止是兩項. 在選項不少時, 逐個生成單選項的方法就顯得太笨了. 解決辦法以下例中所示, 咱們預先定義了一個 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()

上例運行後將顯示以下窗口:
圖2函數

指示器

除了使用默認的空心圓形做爲選項條目, 咱們也能夠用一個文本框來展現選項. 將 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 參數. 上例運行顯示以下:
圖3佈局


全系列:
[譯][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
相關文章
相關標籤/搜索