Oh Mann, das hat mich Nerven gekostet. Da wollte ich mal eben am oberen Fensterrand ein paar Menüpunkte einrichten, aber welche Vorlage ich auch nutzte - nix tat sich. Dachte ich. Bis ich plötzlich feststellte, dass alles funktioniert hatte. Der obere Fensterrand ist tatsächlich der OBERE.
Hier:
Na super. Hab ich einfach nicht gesehen, wollte schon aufgeben. Aber das ist ein Mac-Phänomen - die Pull-Down-Menüs erscheinen am oberen Rand des Bildschirms.
Aber wie geht das überhaupt?
Hier ein einfachstes Beispiel:
from tkinter import *
def ausgeben():
print("Wurde geklickt")
# wenn man auf die Menüpunkte klickt, wird nur diese eine Funktion ausgeführt - es wird "Wurde geklickt" ausgegeben. Ist natürlich nicht sinnvoll, aber dient der Demonstration.
from tkinter import *
Fenster = Tk()
# Das erzeugt ein Fenster
Menuleiste = Menu(Fenster)
# Menu sorgt für eine Menüleiste beim Fenster
dateiMenu = Menu(Menuleiste)
Menuleiste.add_cascade(label="Datei", menu = dateiMenu)
dateiMenu.add_command(label = "Neues Projekt anlegen", command = ausgeben)
dateiMenu.add_command(label = "Projekt öffnen", command = ausgeben)
dateiMenu.add_command(label = "Speichern", command = ausgeben)
dateiMenu.add_separator()
dateiMenu.add_command(label = "Schließen", command = exit)
# zuerst definiere einen neuen Menüpunkt, wieder mit Menu, namens dateiMenu. Mit add_cascade wird das Drop-Down-Menü erstellt, das mit label seinen namen erhält. mit menu ???
Mit add_command werden die einezelnen Punkte dem Dropdown-Menü hinzugefügt, der command-Befehlt ruft die Funktion "ausgeben" auf - dann wird immer "Wurde geklickt" ausgegeben.
add_separator fügt eine Linie ein.
einstellungenMenu = Menu(Menuleiste)
Menuleiste.add_cascade(label= "Einstellungen", menu = einstellungenMenu)
einstellungenMenu.add_command(label="Aussehen", command = ausgeben)
einstellungenMenu.add_command(label="Grundeinstellungen", command = ausgeben)
Ein weiterer Menüpunkt wird der Menüleiste hinzugefügt: einstellungenMenu mit dem Titel "Einstellungen".
Fenster.config(menu=Menuleiste)
Config sorgt dafür, dass die Sache läuft.
Und wieso muss man kein Fenster.mainloop() ans Ende setzen???
Keine Kommentare:
Kommentar veröffentlichen