选中一个复选框将取消选择tkinter中的其他选项

2024-09-28 05:45:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带紫外线、绿色和蓝色的LED面板。试图弄清楚一旦我单击“无光”(选项4),它将如何禁用或取消选择前三个复选按钮(uv、绿色、蓝色)?我在这里看到了不同的选择:

https://www.tutorialspoint.com/python/tk_checkbutton.htm

但我不知道如何连接它们。任何想法都会很有帮助,因为我对Python/编码相当陌生。欣赏任何见解。谢谢大家!

checkvar1 = tk.IntVar()
checkvar2 = tk.IntVar()
checkvar3 = tk.IntVar()
checkvar4 = tk.IntVar()

c1 = tk.Checkbutton(leftframeobjcol, text="UV", variable = checkvar1)
c1.pack(anchor="w")
c2 = tk.Checkbutton(leftframeobjcol, text="Green", variable = checkvar2)
c2.pack(anchor="w")
c3 = tk.Checkbutton(leftframeobjcol, text="Blue", variable = checkvar3)
c3.pack(anchor="w")
c4 = tk.Checkbutton(leftframeobjcol, text="No light", variable = checkvar4)
c4.pack(anchor="w")

Tags: textvariablepacktk蓝色anchor绿色c1
1条回答
网友
1楼 · 发布于 2024-09-28 05:45:32

您可以使用command选项为四个Checkbutton分配回调,并在回调中,根据回调的传递值和检查按钮的当前状态重置其他三个检查按钮或重置No light检查按钮:

def reset(flag=False):
  if flag:
    # 'No light' clicked
    if checkvar4.get():
      checkvar1.set(0)
      checkvar2.set(0)
      checkvar3.set(0)
  else:
    # other light clicked, reset 'No light' if any one of the others is checked
    checkvar4.set(0 if checkvar1.get() or checkvar2.get() or checkvar3.get() else 1)


c1 = tk.Checkbutton(leftframeobjcol, text="UV", variable=checkvar1, command=reset)
c1.pack(anchor="w")
c2 = tk.Checkbutton(leftframeobjcol, text="Green", variable=checkvar2, command=reset)
c2.pack(anchor="w")
c3 = tk.Checkbutton(leftframeobjcol, text="Blue", variable=checkvar3, command=reset)
c3.pack(anchor="w")
c4 = tk.Checkbutton(leftframeobjcol, text="No light", variable = checkvar4, command=lambda:reset(True))
c4.pack(anchor="w")

相关问题 更多 >

    热门问题