首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复选框验证:如何确保用户只能勾选一个复选框?

复选框验证:如何确保用户只能勾选一个复选框?
EN

Stack Overflow用户
提问于 2013-12-12 03:19:38
回答 2查看 1.5K关注 0票数 0

我正在尝试在Tkinter中创建一个多项选择测验。

每个问题都有2-4个不同的答案都显示为复选框,我如何确保用户只能勾选一个复选框,而不是所有复选框?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-12-12 03:24:47

不要使用复选框,而要使用radoibutton。复选框和单选按钮的行为已经确定--复选框允许您从N个选项中选择N个,而单选按钮则设计为允许您从N个选项中选择1个。不要违反此设计模式,否则您的用户会感到困惑。

要使单选按钮工作,请创建一个StringVar并将其与两个或多个单选按钮相关联。所有共享相同变量的单选按钮都将作为一个集合工作,只允许选择一个。

票数 1
EN

Stack Overflow用户

发布于 2013-12-12 04:19:00

尽管OP没有说明这一点,但如果你正在做一个多项选择测验,那么对于某些问题来说,特定的复选框是相互排斥的可能也是可取的。或者,要求用户在N个复选框中选择至多M个复选框,并在问题中明确说明这一要求,以便用户理解设计模式。为此,您可以利用Checkbuttons的回调选项:

代码语言:javascript
复制
from Tkinter import *
master = Tk()

choices = [IntVar() for x in range(4)]
now = None
buttons = None
def cb():
  global now, buttons
  if None != now:
    buttons[now].deselect()
  vals = [choices[i].get() for i in range(4)]
  try: now = vals.index(1)
  except ValueError: now = None
  print "variables are",str([choices[i].get() for i in range(4)])

buttons = [Checkbutton(master, text="Choice "+str(i), variable=choices[i], command=cb) for i in range(4)]
for b in buttons: b.pack()

mainloop()

此示例回答了操作的特定问题,但可以扩展以在特定情况下对复选框的操作进行合法更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20528082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档