Почему меню не отображается в приложении tkinter на macOS?

Как исправить проблему отсутствия отображения меню в моем приложении на MacOS 10.13.6? Я использовал следующий код для создания приложения с меню:

```python
from tkinter import *

w = Tk()
w.geometry('400x300')
w.title('Notepad')
w.iconbitmap('notepad.ico')

def t_get():
    get = text_a.get("1.0", "end")

text_a = Text(w)
text_a.pack(fill=BOTH, expand=True)

main_menu = Menu()
w.config(menu=main_menu)
main_menu.add_cascade(label="File")
main_menu.add_cascade(label="Edit")
main_menu.add_cascade(label="View")

w.mainloop()
```

Приложение запускается без отображения меню ни в верхней части, ни в самом приложении. Я уже пробовал использовать `main_menu = Menu(w)`, но результат остается тем же. Как исправить эту проблему?
  • 15 сентября 2023 г. 10:38
Ответы на вопрос 1
Проблема отсутствия отображения меню в macOS может быть вызвана тем, что вы не указали конкретные команды для выпадающих пунктов меню.

Вот исправленный код, который добавляет команды к выпадающим пунктам меню:

```python
from tkinter import *

w = Tk()
w.geometry('400x300')
w.title('Notepad')
w.iconbitmap('notepad.ico')

def t_get():
    get = text_a.get("1.0", "end")

text_a = Text(w)
text_a.pack(fill=BOTH, expand=True)

main_menu = Menu(w)
w.config(menu=main_menu)

file_menu = Menu(main_menu)
main_menu.add_cascade(label="File", menu=file_menu)
file_menu.add_command(label="Open", command=t_get)
file_menu.add_command(label="Save", command=t_get)
file_menu.add_separator()
file_menu.add_command(label="Exit", command=w.quit)

edit_menu = Menu(main_menu)
main_menu.add_cascade(label="Edit", menu=edit_menu)
edit_menu.add_command(label="Cut", command=t_get)
edit_menu.add_command(label="Copy", command=t_get)
edit_menu.add_command(label="Paste", command=t_get)

view_menu = Menu(main_menu)
main_menu.add_cascade(label="View", menu=view_menu)
view_menu.add_command(label="Zoom In", command=t_get)
view_menu.add_command(label="Zoom Out", command=t_get)

w.mainloop()
```

В этом коде были добавлены команды для каждого пункта меню. Вы можете заменить эти команды на свои собственные функции или методы для обработки соответствующих действий.

Теперь, когда вы запустите приложение, меню должно правильно отображаться в верхней части окна.
Похожие вопросы