Меню — это объект, который присутствует во многих пользовательских приложениях. Находится оно под строкой заголовка и представляет собой выпадающие списки под словами; каждый такой список может содержать другой вложенный в него список. Каждый пункт списка представляет собой команду, запускающую какое-либо действие или открывающую диалоговое окно.
Создание меню в Tkinter
from tkinter import * root = Tk() m = Menu(root) #создается объект Меню на главном окне root.config(menu=m) #окно конфигурируется с указанием меню для него fm = Menu(m) #создается пункт меню с размещением на основном меню (m) m.add_cascade(label="File",menu=fm) #пункту располагается на основном меню (m) fm.add_command(label="Open...") #формируется список команд пункта меню fm.add_command(label="New") fm.add_command(label="Save...") fm.add_command(label="Exit") hm = Menu(m) #второй пункт меню m.add_cascade(label="Help",menu=hm) hm.add_command(label="Help") hm.add_command(label="About") root.mainloop()
Метод add_cascade добавляет новый пункт в меню, который указывается как значение опции menu.
Метод add_command добавляет новую команду в пункт меню. Одна из опций данного метода (в примере выше ее пока нет) — command – связывает данную команду с функцией- обработчиком.
Можно создать вложенное меню. Для этого создается еще одно меню и с помощью add_cascade привязать к родительскому пункту.
nfm = Menu(fm) fm.add_cascade(label="Import",menu=nfm) nfm.add_command(label="Image") nfm.add_command(label="Text")
Каждая команда меню обычно должна быть связана со своей функцией, выполняющей те или иные действия (выражения). Связь происходит с помощью опции 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()