Checkbutton
Checkbutton 的用法:
from tkinter import *
root = Tk()
value = IntVar()
# 需要一个tk变量,用于表示按钮是否被选中。默认情况下,未选中是0,选中是1
choice = Checkbutton(root, text='测试一下', variable=value)
# variable用来表示按钮的状态(是否被按下)
choice.pack()
label = Label(root, textvariable=value)
# 为了更直观的看出选中和未选中value的表现状态,可以将其显示在Label标签里
label.pack()
root.mainloop()
执行结果:
Radiobutton
Radiobutton 的用法和 Checkbutton 用法基本一致,唯一的不同是 Radiobutton 要实现单选效果。同一组内,所有的 Radiobutton 只能共享一个 variable 这个选项,并且要设置不同的 value 的值。
from tkinter import *
root = Tk()
root.title('英雄角色')
value = IntVar() # 多个按钮只需要一个变量
role = [
('射手', 1),
('刺客', 2),
('肉盾', 3),
('法师', 4),
('辅助', 5)]
value = IntVar()
value.set(1)
for lang, num in role:
b = Radiobutton(root, text=lang, variable=value, value=num, indicatoron=False) # 改变前面的小圆点为按钮形式
b.pack(fill=X) # X是横向填充,Y是纵向填充
mainloop()
执行结果:
Labelframe
Labelframe 标签框架。是 Frame 框架的进化版,从形态上来说就是添加了 Label 的 Frame。通过Labelframe,Checkbutton 和 Radiobutton 的分组就很简单了。
from tkinter import *
root = Tk()
group = LabelFrame(root, text='英雄角色:', padx=5, pady=5)
group.pack(padx=10, pady=10)
role = [
('射手', 1),
('刺客', 2),
('肉盾', 3),
('法师', 4),
('辅助', 5)]
value = IntVar()
for lang, num in role:
button = Radiobutton(group, text=lang, variable=value, value=num)
button.pack(anchor=W)
mainloop()
执行结果: