Sie sind hier: Python
Zurück zu: Sprachen
Allgemein:
Vorlesungen
Labore
Sinnvolle Programme
Lineare Regression
GUI-Entwurfsarbeit
Single-Format
Design Pattern-Termine
Observer1
Bsp2
Json-Array
Json-Dialogelemente
Webtechnologien
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üsCheckbutton-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
| 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". |
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()
Abbildung: Menüs mit Tkinter -
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()
Abbildung: 2. Menübeispiel mit Untermenüs -
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()
Abbildung: Menüs mit Checkbutton und Radiobutton -
Gehe zu: Listbox Radiobutton