네, 오래 전이 질문을 받았지만 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()