如何使用复选按钮显示快照

时间:2016-09-30 13:19:10

标签: python tkinter

我的计划旨在:

  • 最初,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)

1 个答案:

答案 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