一、能够让用户进行选择的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控件的使用已经有了更深层次的理解。如有疑问,欢迎留言。