Найти - Пользователи
Полная версия: Подменю в tkinter
Начало » Python для новичков » Подменю в tkinter
1
Mihail@
Добрый день! Помогите разобраться с ситуацией.
Дело в том, что при добавлении второго подменю программа не запускается, почему?
Код рабочей программы, но стоит снять комментарии в 4-х местах, как перестает работать!

from tkinter import *


class Support:
def __init__(self):
root = Tk()
root.title(“ИАЦ: Техподдержка”)
root.geometry(“700x300+500+250”)

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

file_menu = Menu(main_menu, tearoff=0)

#file_menu2 = Menu(file_menu, tearoff=0)
#file_menu2.add_command(label=“Ворд”)
#file_menu2.add_command(label=“Эксель”)

file_menu.add_command(label=“Открыть…”) #, menu=file_menu2)
file_menu.add_command(label=“Новый”)
file_menu.add_command(label=“Сохранить…”)
file_menu.add_command(label=“Выход”)

doc_menu = Menu(main_menu, tearoff=0)
octet_menu = Menu(main_menu, tearoff=0)
nast_menu = Menu(main_menu, tearoff=0)
serv_menu = Menu(main_menu, tearoff=0)

help_menu = Menu(main_menu, tearoff=0)

help_menu2 = Menu(help_menu, tearoff=0)
help_menu2.add_command(label=“Локальная справка”)
help_menu2.add_command(label=“На сайте”)

help_menu.add_cascade(label=“Помощь”, menu=help_menu2)
help_menu.add_command(label=“О программе”)

main_menu.add_cascade(label=“Техническая поддержка и обслуживание”, menu=file_menu)
main_menu.add_cascade(label=“Документы”, menu=doc_menu)
main_menu.add_cascade(label=“Отчеты”, menu=octet_menu)
main_menu.add_cascade(label=“Настройка”, menu=nast_menu)
main_menu.add_cascade(label=“Сервис”, menu=serv_menu)
main_menu.add_cascade(label=“Справка”, menu=help_menu)

root.mainloop()


support = Support()
PEHDOM
Раскоментить все.
Заменить:
file_menu.add_command(label='Открыть…', menu=file_menu2)
на:
file_menu.add_cascade(label='Открыть…', menu=file_menu2)
Mihail@
Спасибо, действительно помогло, видимо уже просто глаз замылился)
Но вот в продолжение, а почему подменю необходимо расписывать перед родительским меню?
Вопрос уже конечно не касающийся проблемы, но все же интересно.
PEHDOM
Mihail@
а почему подменю необходимо расписывать перед родительским меню?
Пайто интерпретируемый ЯП, и код выполняется интерпретатором построчно. Если вы не создадите подменю перед добавлением его в меню то просто получите NameError: и не сможете его добавить.
“Расписать” его можно и позжее, главное чтобы на момент add_cascade() сам объект подменю, пускай и пустой, уже существовал.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB