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

原系列地址: Python Tkinter

Radio Buttons

單選按鈕是一種可在多個(gè)預(yù)先定義的選項(xiàng)中選擇出一項(xiàng)的 Tkinter 控件. 單選按鈕可顯示文字或圖片. 顯示文字時(shí)只能使用預(yù)設(shè)字體. 該控件可以綁定一個(gè) Python 函數(shù)或方法, 當(dāng)單選按鈕被選擇時(shí), 該函數(shù)或方法將被調(diào)用.
單選按鈕 (Radio Button) 這個(gè)名字來(lái)源于收音機(jī) (Radio) 上的調(diào)頻按鈕, 這些按鈕用來(lái)選擇特定波段或預(yù)設(shè)電臺(tái). 如果一個(gè)按鈕被按下, 其他同類的按鈕就會(huì)彈起, 即同時(shí)只有一個(gè)按鈕可被按下.
一組單選按鈕控件和同一個(gè)變量關(guān)聯(lián). 點(diǎn)擊其中一個(gè)單選按鈕將把這個(gè)變量設(shè)為某個(gè)預(yù)定義的值.

簡(jiǎn)單例子

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()

上面代碼輸出如下窗口:


圖1

改進(jìn)例子

很多情況下, 單選按鈕項(xiàng)目將不止是兩項(xiàng). 在選項(xiàng)很多時(shí), 逐個(gè)生成單選項(xiàng)的方法就顯得太笨了. 解決辦法如下例中所示, 我們預(yù)先定義了一個(gè) list, 其元素中包含了按鈕文本及其對(duì)應(yīng)的選項(xiàng)值. 這樣我們就可以用一個(gè)循環(huán)來(lái)建立這組單選按鈕了.

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()

上例運(yùn)行后將顯示如下窗口:


圖2

指示器

除了使用默認(rèn)的空心圓形作為選項(xiàng)條目, 我們也可以用一個(gè)文本框來(lái)展示選項(xiàng). 將 indicatoron 選項(xiàng)設(shè)置為 0 即可達(dá)到該目的: 這表示單選按鈕不會(huì)有額外的單選指示器.
我們將上例中 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ù). 上例運(yùn)行顯示如下:

圖3


譯者水平有限, 如有疏漏, 歡迎指正.
已獲得原作者授權(quán). 原文地址: Radiobuttons

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 雖然這是tk的教程,但是我個(gè)人還是比較推薦使用pyqt來(lái)寫窗口,實(shí)際上pyqt配合qtdesigner寫的窗口不僅...
    遺步看風(fēng)景閱讀 40,564評(píng)論 3 39
  • 1、窗體 1、常用屬性 (1)Name屬性:用來(lái)獲取或設(shè)置窗體的名稱,在應(yīng)用程序中可通過(guò)Name屬性來(lái)引用窗體。 ...
    Moment__格調(diào)閱讀 4,753評(píng)論 0 11
  • 原系列地址: Python Tkinter 簡(jiǎn)介 Entry 是 Tkinter 用來(lái)接收字符串等輸入的控件. 該...
    _Lyux閱讀 1,380評(píng)論 0 2
  • 什么是好股票?能幫我賺錢的就是好股票。
    霸道_8a7f閱讀 84評(píng)論 0 0
  • 一、為什么要看小說(shuō)《心理罪》? 和朋友一起去看了電影版的《心理罪》。 超出預(yù)期的好看!廖凡影帝在,感覺整組演員的演...
    溫姬拉閱讀 733評(píng)論 0 2

友情鏈接更多精彩內(nèi)容