|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
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()
|
|
|
|
|
|
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()
|
|
|
|
|
|
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()
|
|
|
|
|
|
Menüs mit Checkbutton und Radiobutton
|
|
|
Listbox
Radiobutton
|
|
|
|
|