Меню верхнего уровня tkinter не отображаются в macOS - PullRequest
1 голос
/ 07 ноября 2019

Вот классический код effbot , который сообщает:

Трехуровневые меню отображаются непосредственно под строкой заголовка корневого или любых других окон верхнего уровня (или в Macintosh). по верхнему краю экрана). Чтобы создать меню верхнего уровня, создайте новый экземпляр меню и используйте методы add для добавления к нему команд и других пунктов меню.

Но не работает, меню не найдено. Я ожидаю, что есть Welcome и Quit справа от python. Что-то пропустили?

Информация о системе

  • Python 3.7.5
  • macOS Catalina
  • TkVersion 8.6
import tkinter as tk

def hello():
    print('Hi~')

root = tk.Tk()
root.title("MacOS Catalina")
menubar  = tk.Menu(root)
root.configure(menu=menubar)
menubar.add_command(label='Welcome', command=hello)
menubar.add_command(label='Quit', command=root.quit)
root.mainloop()

enter image description here

1 Ответ

0 голосов
/ 07 ноября 2019

В OSX вы не можете помещать команды в корневое меню. Apple просто не позволяет этого. Вы можете только поставить другие меню (каскады). Например:

...
menubar  = tk.Menu(root)
root.configure(menu=menubar)

menu = tk.Menu(menubar)
menu.add_command(label="Welcome", command=hello)
menu.add_command(label="Quit", command=root.quit)
menubar.add_cascade(label="My Menu", menu=menu)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...