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