如何创建包含每个项目复选框的组合框?

时间:2015-03-12 20:39:19

标签: python tkinter

tkinter和python相当新,我想知道如何实现一个像这样的按钮:

  • 点击按钮下拉列表(以便组合框)
  • 列表的每一行都有一个复选框。
  • 最后,如果单击一个复选框,则运行一个函数,或者(甚至更好)一旦组合框不再被删除,运行一个项目被检查为args。

更新

按钮/ menuButton必须像过滤器一样。当菜单被放下时,用户可以取消选中多个选项(每次点击一个项目时菜单都不会消失)他不想要。因此,能够查看复选框以便用户知道哪些选项当前处于活动状态非常重要。

我终于通过创建顶级框架来使用布莱恩的想法。这就是我所拥有的:

2 个答案:

答案 0 :(得分:2)

没有小工具可以做你想要的。您必须使用一堆检查按钮创建一个顶层窗口。然后,您可以使用普通按钮触发外观。

答案 1 :(得分:1)

我不认为OptionMenu除了字符串之外还有其他东西。听起来您想要Listbox的功能,它具有允许多项选择的选项,获取所有选定的项目,等等。

这会在包含的菜单中为您提供OptionMenu 复选框。检查您喜欢的项目,然后在tkinter窗口中右键单击以将复选框的值打印到控制台。

from tkinter import *

master = Tk()

var = StringVar(master)
var.set("Check")
w = OptionMenu(master, variable = var, value="options:")
w.pack()
first = BooleanVar()
second = BooleanVar()
third = BooleanVar()
w['menu'].add_checkbutton(label="First", onvalue=True, 
                          offvalue=False, variable=first)
w['menu'].add_checkbutton(label="Second", onvalue=True, 
                          offvalue=False, variable=second)
w['menu'].add_checkbutton(label="Third", onvalue=1, 
                          offvalue=False, variable=third)


master.bind('<Button-3>', lambda x: print("First:", first.get(), " Second:", 
           second.get(), " - Third:", third.get()))
mainloop()

另见this