gpt4 book ai didi

python - 在 Tkinter 中保持菜单打开

转载 作者:太空宇宙 更新时间:2023-11-03 11:10:01 25 4
gpt4 key购买 nike

我想在级联中的命令按钮被单击后保持菜单级联打开。所以它基本上只有在用户点击其他任何地方时才会关闭(就像通常一样)。似乎无法找到合适的选项或方法来在回调中打开所述菜单。 invoke() 函数仅适用于级联按钮,对吗?你会怎么做?

最佳答案

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

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

关于python - 在 Tkinter 中保持菜单打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7243178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com