3 回答
TA贡献1865条经验 获得超7个赞
这两个小部件有不同的用途,应该相应地使用。
Radiobutton
允许从相互排斥的列表中选择一个选项。Checkbutton
允许从列表中选择任意数量的选项。
Radiobutton
像您一样使用s 在这里是最合适的。
虽然毫无意义,但强制Checkbutton
s 表现得像Radiobutton
s 在技术上是可行的。
将Checkbutton
s 链接到同一个变量,但onvalue
为每个变量设置一个唯一的。
import tkinter as tk
root = tk.Tk()
variable = tk.IntVar(root)
for onvalue in range(1, 5 + 1):
checkbutton = tk.Checkbutton(
root,
onvalue=onvalue,
variable=variable,
)
checkbutton.pack()
root.mainloop()
TA贡献1834条经验 获得超8个赞
复选按钮和单选按钮有不同的选项,因为它们做不同的事情。
实例Checkbutton
不支持value
选项。相反,它有一个onvalue
和offvalue
选项,用于指定小部件打开或关闭时的值。小部件也Checkbutton
需要有自己的独特性。variable
如果您想限制用户,使他们只能从多个值中选择一个值,则Checkbutton
使用 a 是错误的小部件。这正是 的用途Radiobutton
。单选按钮用于排他性选择,复选按钮用于多选。
TA贡献1848条经验 获得超2个赞
如果您希望用户只选择一个复选框,则可以使用复选框。通过运行此代码并选择该选项,您就会明白这一点。我知道其他人已经回答了你的问题。但也许我的回答可以帮助某人。
from tkinter import *
root = Tk()
#Same variable but different values
radiobutton_variable = IntVar()
Radiobutton(root, text="Radiobutton only one", variable = radiobutton_variable, value = 1).grid(row = 0, column = 0)
Radiobutton(root, text="Radiobutton only one", variable = radiobutton_variable, value = 2).grid(row = 0, column = 1)
#Same variable but different values
checkbutton_variable = IntVar()
Checkbutton(root, text="Checkbutton only one", variable = checkbutton_variable, onvalue = 3).grid(row = 1, column = 0)
Checkbutton(root, text="Checkbutton only one", variable = checkbutton_variable, onvalue = 4).grid(row = 1, column = 1)
#Same variable, same values or no value
#Select both radio button
both_select_radiobutton_variable = IntVar()
Radiobutton(root, text="radiobutton both", variable = both_select_radiobutton_variable).grid(row = 2, column = 0)
Radiobutton(root, text="radiobutton both", variable = both_select_radiobutton_variable).grid(row = 2, column = 1)
#Same variable, same values or no value
#Select both check button
both_select_checkbutton_variable = IntVar()
Checkbutton(root, text="Checkbutton both", variable = both_select_checkbutton_variable).grid(row = 3, column = 0)
Checkbutton(root, text="Checkbutton both", variable = both_select_checkbutton_variable).grid(row = 3, column = 1)
mainloop()
添加回答
举报