我的计划旨在:
最初,Label没有显示任何内容(即它是空的)。
用户可以选择任意数量的检查按钮。
用户可以取消选择任何选中的支票按钮。
当选择任意两个Checkbuttons时,Label会显示“Snap”。
当选择任何其他数量的Checkbuttons时,Label会显示 什么都没有(即它是空的)。
这是我的代码,到目前为止
display = ScrolledText(the_window,font=('Arial',24),width =10,height =2,
borderwidth=2,relief='groove')
display.place(x=80,y=7)
def display_snap():
display.insert(END,'Snap')
if display_snap
checkbox = Checkbutton(the_window,command = display_snap)
checkbox.place(x=10,y=80)
checkbox2 = Checkbutton(the_window)
checkbox2.place(x=60 , y=80)
checkbox3 = Checkbutton(the_window)
checkbox3.place(x=110 , y=80)
checkbox4 = Checkbutton(the_window)
checkbox4.place(x=160 , y=80)
checkbox5 = Checkbutton(the_window)
checkbox5.place(x=210 , y=80)
答案 0 :(得分:3)
看起来你正在使用Tkinter。正如Tkinter docs所说“每个Checkbutton小部件应该与变量相关联”。您可以使用变量的.get()
方法检测窗口小部件是否被选中:值为0表示按钮未被选中,1表示已选中该按钮。
这是一个简单的程序,用于将按钮的变量存储在列表中。然后,我们可以使用内置的sum
函数来计算选择的按钮数量,并相应地更新Label小部件的文本。
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text='')
label.grid(row=0, column=0, columnspan=5)
def set_snap():
text = 'Snap' if sum(v.get() for v in states) == 2 else ''
label.config(text=text)
states = []
for i in range(5):
var = tk.IntVar()
states.append(var)
cb = tk.Checkbutton(root, variable=var, command=set_snap)
cb.grid(row=1, column=i)
root.mainloop()
上面的代码适用于Python 3.要在Python 2上运行它,只需将import
行更改为
import Tkinter as tk