Size şöyle anlatmaya çalışayım:
Yukarıdaki örnekte, tk.Menu
sınıfından 2 adet örnek tanımlanmış. İlk tanımlanan örneğin değişken ismi menubar
. İkinci tanımlanan örneğin değişken ismi mainmenu
.
menubar
'a, bir “kademeli menü” olarak mainmenu
atanmış. Aşağıdaki koda bakın lütfen:
menubar.add_cascade(label="Others", menu=mainmenu)
mainmenu
'yü arayüzde Others
ismiyle görüyoruz.
mainmenu
'ye de bir tane komut atanmış, bu komut about
fonksiyonunu çağırıyor ve arayüzde görünecek ismi, About
.
Bir menüye, bir komut eklemek istediğinizde, tk.Menu
nesnesinin add_command()
fonksiyonunu çağırırsınız. Bu fonksiyonun label
parametresine, komutun arayüzde görünmesini istediğiniz ismini yazarsınız. command
parametresine de çağrılacak fonksiyonu yazarsınız.
Bir menüye, bir kademeli menü eklemek istediğinizde. Bir tk.Menu
nesnesi daha oluşturursunuz ve oluşturduğunuz bu nesneyi başka bir menünün add_cascade
fonksiyonunun menu
parametresine yazarsınız. add_cascade
fonksiyonunun label
parametesine alt menünün arayüzde gösterilecek ismini yazarsanız.
Üçüncü bir menü tanımlayıp, menubar
'ın add_cascade()
fonksiyonun menu
parametresinin değeri haline getirirseniz, Others
'ın yanında label
parametresiyle ismini belirlediğiniz yeni menü görünür.
Ana menüdeki kademeli menüler ve komutlar yan yana görünür. Alt menülerde menüler ve komutlar alt alta görünür.
Örnek:
import tkinter as tk
root = tk.Tk()
menu = tk.Menu(master=root, tearoff=False)
menu_1 = tk.Menu(master=menu, tearoff=False)
menu_2 = tk.Menu(master=menu, tearoff=False)
# menu'ye kademeli menüleri ekleyelim.
menu.add_cascade(label="Menu 1", menu=menu_1)
menu.add_cascade(label="Menu 2", menu=menu_2)
# menu_1'e komut ekleyelim
menu_1.add_command(label="say hello", command=lambda: print("hello"))
# menu_2'ye komut ekleyelim
menu_2.add_command(label="say world", command=lambda: print("world"))
# menu'ye komut ekle.
menu.add_command(label="Say Hi", command=lambda: print("Hi"))
# İsterseniz yeni bir tane menü tanımlayın.
menu_1_1 = tk.Menu(master=menu, tearoff=False)
# Bu menüyü menu_1'in kademeli menüsü haline getirin.
menu_1.add_cascade(label="Menu 1.1", menu=menu_1_1)
# menu_1_1'e komut ekleyelim.
menu_1_1.add_command(label="Say Ciao", command=lambda: print("Ciao"))
root["menu"] = menu
root.mainloop()