Привязка функций к меню

Каждая команда меню обычно должна быть связана со своей функцией, выполняющей те или иные действия (выражения). Связь происходит с помощью опции 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()