首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Tkinter中保持菜单打开

在Tkinter中保持菜单打开
EN

Stack Overflow用户
提问于 2011-08-30 20:31:56
回答 1查看 1.5K关注 0票数 4

我希望在单击级联中的命令按钮后,保持菜单级联打开。因此,它基本上只在用户单击其他位置时才关闭(就像通常一样)。在回调中似乎找不到正确的选项或方法来打开所述菜单。invoke()函数只适用于级联中的按钮,对吗?你会怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2012-05-04 04:19:13

是的,我知道这在很久以前就被问过了,但我很好奇是否有任何方法可以用tkinter来完成这一点,所以我花了一段时间摆弄了一下,想出了怎么做。我无法想出一种方法来正确地将持久菜单放在它最初打开时的位置,但我已经设法使它持久存在于您请求的任何位置(我使用根窗口的左上角)。是的,我知道这不是一个很好的基于类的实现,但我只是想要一个尽可能简单的测试,而不是用太多无关的细节来遮蔽它。

代码语言:javascript
复制
try:
    from tkinter import *
    from tkinter.ttk import *
except:
    from Tkinter import *
    from ttk import *

root = Tk()
var = StringVar()

def menu_click(menu, item):
    global root
    var.set(item)
    menu.post(root.winfo_rootx(), root.winfo_rooty())

root.option_add('*tearOff', False)  # remove tearoff from all menus
Label(root, textvariable=var).pack()  # just to give menu clicks some feedback
root.geometry('400x300')
menubar = Menu(root)
root['menu'] = menubar
menu_test = Menu(menubar)
menubar.add_cascade(menu=menu_test, label='Test')
menu_test.add_command(label='One', command=lambda: menu_click(menu_test, 'One'))
menu_test.add_command(label='Two', command=lambda: menu_click(menu_test, 'Two'))
menu_test.add_command(label='Three', command=lambda: menu_click(menu_test, 'Three'))
menu_cas = Menu(menu_test)
menu_test.add_cascade(menu=menu_cas, label='Four')
menu_cas.add_command(label='One', command=lambda: menu_click(menu_cas, 'Fourty One'))
menu_cas.add_command(label='Two', command=lambda: menu_click(menu_cas, 'Fourty Two'))
menu_cas.add_command(label='Three', command=lambda: menu_click(menu_cas, 'Fourty Three'))
root.mainloop()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7243178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档