Menu
Eigenschaften
Bemerkung:
Das Menü besteht wie in Java aus einem MenuBar, hier aber Menu benannt.
Die Menüs werden über das Widget “Menu” dargestellt.
Die Menüeinträge warden über “add_command” realisiert.Eingetragen warden die Menüeinträge mitttels des Befehls “add_cascade”.
Erzeugen:
im Konstruktor:
self.menuBar = tkinter.Menu(self)
in setGUI:
self.menuFile = tkinter.Menu(self.menuBar, tearoff=False)
self.menuFile.add_command(label="Öffnen", command=self.openFile)
self.menuFile.add_separator()
self.menuFile.add_command(label="Beenden", command=self.quit)
self.menuBar.add_cascade(label="Datei", menu=self.menuFile) # Name des Hauptmenüs
Checkbutton-Menüs:
self.chkValue1 = tkinter.IntVar()
self.menuFont.add_checkbutton(label="Fett", command=self.bold, variable=self.chkValue1)
Abfrage:
print("self.chkValue1",self.chkValue1.get()) # 0 oder 1 kann gesetzt werden mit offvalue=0 onvalue=1
Radiobuttons-Menüs:
self.v = tkinter.StringVar() # "radiogruppe"
self.menuFont.add_radiobutton(label="Arial", command=self.arial, variable=self.v)
self.menuFont.add_radiobutton(label="Helvitica", command=self.helvitica, variable=self.v)
self.menuFont.add_radiobutton(label="Verdana", command=self.verdana, variable=self.v)
Abfrage der Radionbuttonmenüs
def helvitica(self):
__print(self.radioValue.get()) # hier Ausgabe Arial/Helvitica/Verdana
Layout-Manager:
kein pack oder grid
Eigenschaften
Option | Beschreibung |
add_command ( options ) | Hinzufügen eines Menüeintrags |
add_radiobutton( options ) | Hinzufügen eines Menüeintrags mit Radiobutton |
add_checkbutton( options ) | Hinzufügen eines Menüeintrags mit check button |
add_cascade( options ) | Einfügen eines Hauptmenüs oder Submenüs. |
add_separator() | Einfügen eines Separators |
add( type, options ) | Hinzufügen von Typen von Menüs. |
delete( startindex [, endindex ]) | Löschen von Menüeinträge |
entryconfig( index, options ) | Möglichkeit zur Modifizierung. |
index(item) | Ausgabe des Index eines Menüeintrags. |
insert_separator ( index ) | Einfügen eines Separator |
invoke ( index ) | Aufruf der Event-Methode. Setzt die Checkbox oder Radiobutton. |
type ( index ) |
Rückgabe des Types: "cascade""checkbutton" "command" "radiobutton" "separator" "tearoff". |
1. Beispiel
import tkinter class MyApp(tkinter.Frame): def __init__(self, master=None): tkinter.Frame.__init__(self, master) self.menuBar = tkinter.Menu(self) master.config(menu=self.menuBar) self.setGUI() self.pack() def setGUI(self): self.menuFile = tkinter.Menu(self.menuBar, tearoff=False) self.menuFile.add_command(label="Öffnen", command=self.openFile) self.menuFile.add_command(label="Speichern", command=self.saveFile) self.menuFile.add_command(label="Speichern unter", command=self.saveasFile) self.menuFile.add_separator() self.menuFile.add_command(label="Beenden", command=self.quit) self.menuBar.add_cascade(label="Datei", menu=self.menuFile) self.menuEdit = tkinter.Menu(self.menuBar, tearoff=False) self.menuEdit.add_command(label="Einfügen", command=self.openFile) self.menuEdit.add_command(label="Kopieren", command=self.saveFile) self.menuBar.add_cascade(label="Edit", menu=self.menuEdit) self.editor = tkinter.Text(self) self.editor.pack(padx="5",pady="5") def openFile(self): self.editor.insert("end","openFile\r\n") def saveFile(self): self.editor.insert("end","saveFile\r\n") def saveasFile(self): self.editor.insert("end","saveasFile\r\n") root = tkinter.Tk() root.title("Mein Fenster") root.geometry("250x300") app = MyApp(root) app.mainloop()

Menüs mit Tkinter
2. Beispiel
import tkinter class MyApp(tkinter.Frame): def __init__(self, master=None): tkinter.Frame.__init__(self, master) self.menuBar = tkinter.Menu(self) master.config(menu=self.menuBar) self.setGUI() self.pack() def setGUI(self): self.menuFile = tkinter.Menu(self.menuBar, tearoff=False) self.menuFile.add_command(label="Öffnen", command=self.openFile) self.menuFile.add_command(label="Speichern", command=self.saveFile) self.menuFile.add_command(label="Speichern unter", command=self.saveasFile) self.menuFile.add_separator() self.menuSubFile = tkinter.Menu(self.menuBar, tearoff=False) self.menuSubFile.add_command(label="Sub1") self.menuSubFile.add_command(label="Sub2") self.menuSubFile.add_command(label="Sub3") self.menuFile.add_cascade(label="Sub1-3", menu=self.menuSubFile) self.menuFile.add_separator() self.menuFile.add_command(label="Beenden", command=self.quit) self.menuBar.add_cascade(label="Datei", menu=self.menuFile) self.menuEdit = tkinter.Menu(self.menuBar, tearoff=False) self.menuEdit.add_command(label="Einfügen", command=self.insertClipboard) self.menuEdit.add_command(label="Kopieren", command=self.copyClipboard) self.menuBar.add_cascade(label="Edit", menu=self.menuEdit) self.editor = tkinter.Text(self) self.editor.pack(padx="5",pady="5") def openFile(self): self.editor.insert("end","openFile\r\n") def saveFile(self): self.editor.insert("end","saveFile\r\n") def saveasFile(self): self.editor.insert("end","saveasFile\r\n") def insertClipboard(self): self.editor.insert("end","insertClipboard\r\n") def copyClipboard(self): self.editor.insert("end","copyClipboard\r\n") root = tkinter.Tk() root.title("Mein Fenster") root.geometry("250x300") app = MyApp(root) app.mainloop()

2. Menübeispiel mit Untermenüs
3. Beispiel
import tkinter class MyApp(tkinter.Frame): def __init__(self, master=None): tkinter.Frame.__init__(self, master) self.menuBar = tkinter.Menu(self) master.config(menu=self.menuBar) self.setGUI() self.pack() # muss immer sein def setGUI(self): self.menuFile = tkinter.Menu(self.menuBar, tearoff=False) self.menuFile.add_command(label="Öffnen", command=self.openFile) self.menuFile.add_command(label="Speichern", command=self.saveFile) self.menuFile.add_command(label="Speichern unter", command=self.saveasFile) self.menuFile.add_separator() self.menuSubFile = tkinter.Menu(self.menuBar, tearoff=False) self.menuSubFile.add_command(label="Sub1") self.menuSubFile.add_command(label="Sub2") self.menuSubFile.add_command(label="Sub3") self.menuFile.add_cascade(label="Sub1-3", menu=self.menuSubFile) self.menuFile.add_separator() self.menuFile.add_command(label="Beenden", command=self.quit) self.menuBar.add_cascade(label="Datei", menu=self.menuFile) self.menuEdit = tkinter.Menu(self.menuBar, tearoff=False) self.menuEdit.add_command(label="Einfügen", command=self.insertClipboard) self.menuEdit.add_command(label="Kopieren", command=self.copyClipboard) self.menuBar.add_cascade(label="Edit", menu=self.menuEdit) self.menuFont = tkinter.Menu(self.menuBar, tearoff=False) self.menuFont.add_checkbutton(label="Fett", command=self.bold) self.menuFont.add_checkbutton(label="Kursiv", command=self.italic) self.menuFont.add_separator() self.v = tkinter.IntVar() self.menuFont.add_radiobutton(label="Arial", command=self.arial, variable=self.v) self.menuFont.add_radiobutton(label="Helvitica", command=self.helvitica, variable=self.v) self.menuFont.add_radiobutton(label="Verdana", command=self.verdana, variable=self.v) self.menuBar.add_cascade(label="Schrift", menu=self.menuFont) # self.menuBar.grid(row=0, column=0) self.bnAction = tkinter.Button(self) self.bnAction["text"] = "Action" self.bnAction["command"] = self.onAction self.bnAction.pack(side="right") self.bnAction.grid(row=0, column=0, padx="10",pady="10", sticky="w") self.editor = tkinter.Text(self) # self.editor.pack(padx="5",pady="5") self.editor.grid(row=1, column=0, padx="5",pady="5") def openFile(self): self.editor.insert("end","openFile\r\n") def saveFile(self): self.editor.insert("end","saveFile\r\n") def saveasFile(self): self.editor.insert("end","saveasFile\r\n") def insertClipboard(self): self.editor.insert("end","insertClipboard\r\n") def copyClipboard(self): self.editor.insert("end","copyClipboard\r\n") def bold(self): self.editor.insert("end","bold\r\n") def italic(self): self.editor.insert("end","italic\r\n") def arial(self): self.editor.insert("end","arial\r\n") def helvitica(self): self.editor.insert("end","helvitica\r\n") def verdana(self): self.editor.insert("end","verdana\r\n") def onAction(self): self.editor.insert("end","\r\nonAction\r\n") # mnItem = self.menuFont.index(4) # self.editor.insert("end",mnItem+ "\r\n") print(self.v) root = tkinter.Tk() root.title("Mein Fenster") root.geometry("250x300") app = MyApp(root) app.mainloop()
