Üst açılır menü komutlar atama

bir menü oluşturdum ancak içerisine neler yazacağımı bilmiyorum mesela menüerden biri kronometre onu açtığımda tkinter da kronometre sayfası açılmasını istiyorum bu konuda yardım edebilir misiniz

  def yapma():
     filewin = Toplevel(root)
     düğme=Button( filewin , text="Bir şey yapma!")
     düğme.pack()
menubar = Menu(root)
anaMenü = Menu( menubar , tearoff=0)
menubar.add_cascade(label="Diğer", menu=anaMenü)
anaMenü.add_command(label="Kronometre", command=kronometre)
anaMenü.add_separator()
anaMenü.add_command(label="Zamanlayıcı", command=yapma)

yardım= Menu(menubar, tearoff=0)
menubar.add_cascade(label="Yardım", menu=yardım)
yardım.add_command(label="Hakkında...", command=yapma)

root.config(menu=menubar)

Merhaba, tkinter.TopLevel ya da tkinter.Frame kullanabilirsin.

from tkinter import *


root = Tk()
root.geometry("250x150")

menubar = Menu(root)
mainmenu = Menu(menubar, tearoff=0)


def about():
    toplevel = Toplevel()
    toplevel.geometry("200x200")

    label = Label(toplevel, text="This program about...")
    label.pack()


menubar.add_cascade(label="Others", menu=mainmenu)
mainmenu.add_command(label="About", command=about)
root.config(menu=menubar)

root.mainloop()

mesela orada mainmenu var
menubar.add_cascade(label="Others", menu=mainmenu)
buna kronometre eklemek istesem nasıl yapacağım def olarak mı yazacağım

Fonksiyonun adresini command parametresinin değeri olarak yazmalısınız.

dediğinizi anlamadım

uygulayıp gösterme şansınız var mı

@beucismis göstermiş zaten.

ben anlayamadım ama mesela orada others menüsünü nasıl dolduracağım ona tıklandığında çalışacak komutları nereye nasıl yazacağım onu soruyorum

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()
1 Beğeni

menu 1 de say hello kısmına tıklandığında yazı yerine bir kronometre eklemek istesem
def olarak mı yazacağım teşekkürler bu arada