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

Selecting one checkbox deselects other options in tkinter

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

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

但我不知道如何连接它们。由于我对 Python/coding 还很陌生,任何想法都会很有帮助。感谢任何见解。谢谢!

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

您可以使用 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")