一、能夠讓用戶進行選擇的Radiobutton
Radiobutton是列表框控制項的一種,可以在多個選項中進行選擇,只能選擇其中的一個。每個Radiobutton之間的選項互相排斥,即當選中其中的一個時,其他的都將不被選中。這在許多應用程序中異常方便。比如在性別選擇、啟動方式選擇等場合,就能很好的使用Radio button來解決。下面是一個簡單的例子:
from tkinter import * root = Tk() v = IntVar() Radiobutton(root, text='Male', variable=v, value=1).pack(anchor=W) Radiobutton(root, text='Female', variable=v, value=2).pack(anchor=W) root.mainloop()
運行結果如下圖所示:
該程序中使用了IntVar(),可以理解成VI,即為全局變數,用來實現多個RadioButton之間的封裝。接著使用Radio實例化,並用其pack()方法將兩個Radio button裝入主窗口中,其中text為控制項名稱,variable為全局變數,value為將要被綁定的值(數值),多個選項的value需要不同,否則只有最後一個有效。
二、Radiobutton格式化
在界面設計的時候,我們可能需要對Radiobutton進行一定的格式化,比如需要讓選項排布有序。那麼該如何實現呢?使用Radiobutton的輔助類RadioButton會使我們的任務變得異常簡單。下面是一個例子:
from tkinter import * master = Tk() v = IntVar() def ShowChoice(): print(v.get()) Radiobutton(master, text="One", variable=v, value=1, command=ShowChoice).grid(row=0, sticky=W) Radiobutton(master, text="Two", variable=v, value=2, command=ShowChoice).grid(row=1, sticky=W) Radiobutton(master, text="Three", variable=v, value=3, command=ShowChoice).grid(row=2, sticky=W) mainloop()
運行結果如下:
在該程序中,我們使用了grid()布局來實現了RadioButton排布的方式。這種排版方式更加美觀且易管理。同時,我們也可以在RadioButton中添加command,這樣當某個RadioButton被選中時,就能自動調用該函數,實現相應的操作。
三、Radiobutton進行綁定
Radiobutton可以將值綁定到一個變數上,這樣就可以在RadioButton的Value上做文章。在上面的例子中,我們使用value=1,value=2和value=3分別對三個RadioButton進行了綁定。
事實上,RadioButton並不局限於int類型,具體綁定類型取決於程序的需求,只需要將變數類型更改即可。下面是一個簡單的例子:
from tkinter import * master = Tk() v = StringVar() langs = [('Python', 'Python'), ('Perl', 'Perl'), ('Ruby', 'Ruby'), ('Lua', 'Lua')] v.set('Python') for lang, mode in langs: Radiobutton(master, text=lang, variable=v, value=mode).pack(anchor=W) mainloop()
運行結果如下:
在該程序中,我們使用了StringVar類型的全局變數v。同時,langs是一個元組列表,其中每個元素都是由兩個字元串組成,一個是選項的名稱,另一個是將要綁定的變數。最後,我們使用Radiobutton生成了四個選項按鈕,並分別注入到了一個個變數中。值得注意的是,變數v的默認值被設定成了’Python’。
四、Radiobutton樣式的修改
在許多應用中,Radiobutton的樣式是不可或缺的,因為樣式能夠讓界面變得專業化並且簡潔具有美感。下面是一個例子:
from tkinter import * from tkinter.ttk import * master = Tk() v = IntVar() style = Style() style.configure("TRadiobutton", background="lightgreen", foreground="blue", font=("Arial", 14)) rb1 = Radiobutton(master, style="TRadiobutton", text='male', variable=v, value=1) rb2 = Radiobutton(master, style="TRadiobutton", text='female', variable=v, value=2) rb1.pack(anchor=W) rb2.pack(anchor=W) mainloop()
運行結果如下:
在上面的例子中,我們使用了ttk中的Style()函數來生成一個新樣式。具體而言,我們修改了背景、前景、以及字體情況。最後,我們將兩個Radiobutton放在了容器當中。
五、綜合樣例:
下面是一個綜合的例子,該示例將Radiobutton放在了一個Frame當中:
from tkinter import * root = Tk() root.geometry('200x200') frame = Frame(root) frame.pack() group = LabelFrame(frame, text='Group') group.pack(side=LEFT, padx=10, pady=10) v = StringVar() langs = [('Python', 'Python'), ('Perl', 'Perl'), ('Ruby', 'Ruby'), ('Lua', 'Lua')] v.set('Python') for lang, mode in langs: Radiobutton(group, text=lang, variable=v, value=mode).pack(anchor=W) root.mainloop()
運行結果如下:
該程序使用了Frame容器將Radiobutton信息放置到一個指定的位置。同時,我們也調整了控制項之間的大小,以更好的適應程序的需求。
六、小結
Radiobutton是一個重要的窗口交互控制項,可以幫助我們在窗口中完成更多元化的交互操作。相信通過本文的闡述,讀者對於Radiobutton控制項的使用已經有了更深層次的理解。如有疑問,歡迎留言。
原創文章,作者:YZBAP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/369181.html