为了账号安全,请及时绑定邮箱和手机立即绑定

Tkinter - 只标记一个复选框

Tkinter - 只标记一个复选框

青春有我 2023-06-06 10:22:23
以下代码允许用户只选择一个单选按钮。例如,如果用户选择 Type II 按钮,然后单击 Type III 按钮,则先前的选择将消失。from tkinter import *root = Tk()radiobutton_variable = IntVar()Radiobutton(root, text="Type II",  variable = radiobutton_variable, value = 1).grid(row = 0, column = 0)Radiobutton(root, text="Type III", variable = radiobutton_variable, value = 2).grid(row = 0, column = 1)Radiobutton(root, text="Type IV",  variable = radiobutton_variable, value = 3).grid(row = 1, column = 0)Radiobutton(root, text="Type V",   variable = radiobutton_variable, value = 4).grid(row = 1, column = 1)mainloop()如果我对检查按钮小部件使用相同的代码,我会收到错误消息:TclError: unknown option "-value"有人知道如何解决这个问题吗?
查看完整描述

3 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

这两个小部件有不同的用途,应该相应地使用。

  • Radiobutton允许从相互排斥的列表中选择一个选项。

  • Checkbutton允许从列表中选择任意数量的选项。

Radiobutton像您一样使用s 在这里是最合适的。

虽然毫无意义,但强制Checkbuttons 表现得像Radiobuttons 在技术上是可行的。
Checkbuttons 链接到同一个变量,但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()


查看完整回答
反对 回复 2023-06-06
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

复选按钮和单选按钮有不同的选项,因为它们做不同的事情。

实例Checkbutton不支持value选项。相反,它有一个onvalueoffvalue选项,用于指定小部件打开或关闭时的值。小部件也Checkbutton需要有自己的独特性。variable

如果您想限制用户,使他们只能从多个值中选择一个值,则Checkbutton使用 a 是错误的小部件。这正是 的用途Radiobutton。单选按钮用于排他性选择,复选按钮用于多选。


查看完整回答
反对 回复 2023-06-06
?
慕尼黑5688855

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()


查看完整回答
反对 回复 2023-06-06
  • 3 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信