Úvod do Tkinter - Okna pro jazyk Python - Postavené na základech 'An Introduction to Tkinter'
Udělátko menu slouží k implementaci menu (hlavních, rozbalovacích i vyskakovacích).
Toto udělátko se používá k zobrazování menu všech druhů. Neměli byste mít potřebu vytvářet menu jinými způsoby (například tlačítkem), protože toto udělátko obsahuje nativní kód všude, kde je to možné.
Hlavní menu jsou zobrazovány hned pod titulkovým pruhem okna root i toplevel. K vytvoření hlavního menu vytvořte nejprve novou instanci Menu a pak přidávejte příkazy a další položky menu pomocí metody add.
# -*- coding: utf-8 -*- from Tkinter import * root = Tk() def hello(): print "Ahoj!" # vytvoření hlavního menu menuLista = Menu(root) menuLista.add_command(label="Ahoj!", command=hello) menuLista.add_command(label="Pryč!", command=root.destroy) # zobrazení menu root.config(menu=menuLista) mainloop()
Rozbalovací menu (a další podnabídky) se vytvářejí podobným způsobem. Hlavní rozdíl je, že k rodičovskému menu se musí připojit pomocí add_cascade.
# -*- coding: utf-8 -*- from Tkinter import * root = Tk() def hello(): print "Ahoj!" hlavniMenu = Menu(root) # vytvořit rozbalovací menu a přidat ho k hlavnímu menu menuSoubor = Menu(hlavniMenu, tearoff=0) menuSoubor.add_command(label="Otevřít", command=hello) menuSoubor.add_command(label="Uložit", command=hello) menuSoubor.add_separator() menuSoubor.add_command(label="Pryč", command=root.quit) hlavniMenu.add_cascade(label="Soubor", menu=menuSoubor) # další rozbalovací menu menuUpravy = Menu(hlavniMenu, tearoff=0) menuUpravy.add_command(label="Vyjmout", command=hello) menuUpravy.add_command(label="Kopírovat", command=hello) menuUpravy.add_command(label="Vložit", command=hello) hlavniMenu.add_cascade(label="Upravit", menu=menuUpravy) menuNapoveda = Menu(hlavniMenu, tearoff=0) menuNapoveda.add_command(label="O aplikaci", command=hello) hlavniMenu.add_cascade(label="Nápověda", menu=menuNapoveda) # zobrazení menu root.config(menu=hlavniMenu) mainloop()
Do třetice - místní nabídka - menu na pravém tlačítku myši - se vytváří podobně, jen se zobrazuje pokaždé nanovo pomocí metodypost:
# -*- coding: utf-8 -*- from Tkinter import * root = Tk() def hello(): print "Ahoj!" # vytvoření menu menu = Menu(root, tearoff=0) menu.add_command(label="Zpět", command=hello) menu.add_command(label="Znovu", command=hello) # vytvoření plochy frame = Frame(root, width=300, height=200) frame.pack() def popup(event): menu.post(event.x_root, event.y_root) # propojení plochy s menu frame.bind("<Button-3>", popup) # menu nezobrazíme # root.config(menu=menu) mainloop()
Použijte volání postcommand ke změně (nebo dokonce vytvoření) menu pokaždé, když se zobrazuje:
# -*- coding: utf-8 -*- from Tkinter import * counter = 0 root = Tk() def update(): global counter counter = counter + 1 menu.entryconfig(0, label=str(counter)) menubar = Menu(root) menu = Menu(menubar, tearoff=0, postcommand=update) menu.add_command(label=str(counter)) menu.add_command(label="Exit", command=root.quit) menubar.add_cascade(label="Test", menu=menu) root.config(menu=menubar) mainloop()
Menu.
Vytvoří menu..
Metoda activate.
Přidá, připojí, položku daného typu k menu.
Přidá podmenu. Viz add.
Přidá zaškrtávací tlačítko. Viz add.
Přídá příkaz. Viz add.
Přidá radiobutton. Viz add.
Přidá separator. Viz add.
Mění jeden nebo více parametrů udělátka. Metoda vrací aktuální nastavení, nepředáte-li žádný parametr.
Maže jednu nebo více položek menu.
Metoda entrycget.
Přenastavuje danou položku menu. Mění se jen dané položky, zbytek se nemění. Více viz add.
Stejné jako entryconfig.
Převádí index jakéhokoliv typu na celočíselný index. index.
Vkládá položku daného typu do menu. Je to podobné jako add, ale vkládá položky.
Vkládá submenu.
Vkládá checkbutton.
Vkládá command.
Vkládá radiobutton.
Vkládá separator
Metoda invoke.
Zobrazuje menu na dané pozici. Pozice by měla být udána v pixelech, relativně k rodičovskému oknu.
Vrací typ dané položky menu..
Maže zobrazené menu.
Vrací vertikální offset dané položky. Používá se, aby byla daná položka pod myší pokaždé, když je menu zobrazeno.
Přeložil a upravil - Pavel Kosina - Copyright © 2007 TkinterCZ - GNU Free Documentation License 1.2