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ü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




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()



Menüs mit Checkbutton und Radiobutton


Listbox
Radiobutton