Привязка функций к меню
Каждая команда меню обычно должна быть связана со своей функцией, выполняющей те или иные действия (выражения). Связь происходит с помощью опции command метода add_command. Функция обработчик до этого должна быть определена.
Для примера выше далее приводятся исправленные строки добавления команд “About”, “New” и “Exit”, а также функции, вызываемые, когда пользователь щелкает левой кнопкой мыши по соответствующим пунктам подменю.
def new_win():
win = Toplevel(root)
def close_win():
root.destroy()
def about():
win = Toplevel(root)
lab = Label(win,text="Это просто программа-тест \n меню в Tkinter")
lab.pack()
….
fm.add_command(label="New",command=new_win)
….
fm.add_command(label="Exit",command=close_win)
….
hm.add_command(label="About",command=about)
Практическая работа
Напишите приложение с меню, содержащим два пункта: Color и Size. Пункт Color должен содержать три команды (Red, Green и Blue), меняющие цвет рамки на главном окне. Пункт Size должен содержать две команды (500x500 и 700х400), изменяющие размер рамки.
Примерный ответ к практической работе
from tkinter import *
root = Tk()
def colorR():
fra.config(bg="Red")
def colorG():
fra.config(bg="Green")
def colorB():
fra.config(bg="Blue")
def square():
fra.config(width=500)
fra.config(height=500)
def rectangle():
fra.config(width=700)
fra.config(height=400)
fra = Frame(root,width=300,height=100,bg="Black")
fra.pack()
m = Menu(root)
root.config(menu=m)
cm = Menu(m)
m.add_cascade(label="Color",menu=cm)
cm.add_command(label="Red",command=colorR)
cm.add_command(label="Green",command=colorG)
cm.add_command(label="Blue",command=colorB)
sm = Menu(m)
m.add_cascade(label="Size",menu=sm)
sm.add_command(label="500x500",command=square)
sm.add_command(label="700x400",command=rectangle)
root.mainloop()