Radiobutton funktionieren in Klasse nicht
Verfasst: Dienstag 1. Oktober 2019, 13:27
Im 1. Beispiel funktionieren die Radio-Buttons korrekt. Wenn das Beispiel in eine Klasse übertragen wird und aus einem Menü aufgerufen wird funktioniert es nicht. Die Funktion Click gibt immer den Wert 0 zurück. Kann jemand helfen?
1. Beispiel:
from tkinter import *
fenster2 = Tk()
fenster2.title('Radio')
fenster2.geometry('420x225')
# Rahmen Radiobutton
rahmen = Frame(fenster2)
rahmen.place(x=5, y=5, width=310, height=180)
def Click():
anzeige = str(wert.get()) + ' Liter'
labelText.config(text=anzeige)
def callback(*args): # Funktion wird aufgerufen wenn wert wechselt
print(wert.get()) #
wert = IntVar()
# Radiobutton
radiobutton1 = Radiobutton(rahmen, anchor='w', text='kleine Menge', value=2, variable=wert, command=Click)
radiobutton1.place(x=5, y=30, width=100, height=20)
radiobutton2 = Radiobutton(rahmen, anchor='w', text='mittlere Menge', value=3, variable=wert, command=Click)
radiobutton2.place(x=5, y=50, width=100, height=20)
radiobutton3 = Radiobutton(rahmen, anchor='w', text='grosse Menge', value=5, variable=wert, command=Click)
radiobutton3.place(x=5, y=70, width=100, height=20)
radiobutton1.select()
# Label Text
labelText = Label(rahmen, text=str(wert.get()) + ' Liter')
labelText.place(x=5, y=5, width=100, height=20)
wert.trace('w', callback) # Wird aufgerufen wenn wert wechselt
fenster2.mainloop()
2. Beispiel:
Erst das Menü:
from tkinter import *
from radio import *
def radio():
app=radio=Radio()
app.radio()
fenster=Tk()
fenster.geometry("850x850")
fenster.title("Beispiel-Menue")
rahmen=Frame(fenster, relief="ridge", borderwidth=5)
rahmen.pack(fill="both", expand=1)
menubar = Menu(fenster)
dateimenu = Menu(menubar, tearoff=0)
dateimenu.add_command(label="Radio- Checkbutton", command=radio)
dateimenu.add_separator()
dateimenu.add_command(label="Ende", command=fenster.quit)
menubar.add_cascade(label="Datei", menu=dateimenu)
fenster.config(menu=menubar)
fenster.mainloop()
Dann das 1. Beispiel in der Klasse Radio:
from tkinter import *
class Radio():
def radio(self):
fenster2 = Tk()
fenster2.title('Radio')
fenster2.geometry('420x225')
# Rahmen Radiobutton
rahmen = Frame(fenster2)
rahmen.place(x=5, y=5, width=310, height=180)
def Click():
anzeige = str(wert.get()) + ' Liter'
labelText.config(text=anzeige)
def callback(*args): # Funktion wird aufgerufen wenn wert wechselt
print(wert.get()) #
wert = IntVar()
# Radiobutton
radiobutton1 = Radiobutton(rahmen, anchor='w', text='kleine Menge', value=2, variable=wert, command=Click)
radiobutton1.place(x=5, y=30, width=100, height=20)
radiobutton2 = Radiobutton(rahmen, anchor='w', text='mittlere Menge', value=3, variable=wert, command=Click)
radiobutton2.place(x=5, y=50, width=100, height=20)
radiobutton3 = Radiobutton(rahmen, anchor='w', text='grosse Menge', value=5, variable=wert, command=Click)
radiobutton3.place(x=5, y=70, width=100, height=20)
radiobutton1.select()
# Label Text
labelText = Label(rahmen, text=str(wert.get()) + ' Liter')
labelText.place(x=5, y=5, width=100, height=20)
wert.trace('w', callback) # Wird aufgerufen wenn wert wechselt
fenster2.mainloop()
1. Beispiel:
from tkinter import *
fenster2 = Tk()
fenster2.title('Radio')
fenster2.geometry('420x225')
# Rahmen Radiobutton
rahmen = Frame(fenster2)
rahmen.place(x=5, y=5, width=310, height=180)
def Click():
anzeige = str(wert.get()) + ' Liter'
labelText.config(text=anzeige)
def callback(*args): # Funktion wird aufgerufen wenn wert wechselt
print(wert.get()) #
wert = IntVar()
# Radiobutton
radiobutton1 = Radiobutton(rahmen, anchor='w', text='kleine Menge', value=2, variable=wert, command=Click)
radiobutton1.place(x=5, y=30, width=100, height=20)
radiobutton2 = Radiobutton(rahmen, anchor='w', text='mittlere Menge', value=3, variable=wert, command=Click)
radiobutton2.place(x=5, y=50, width=100, height=20)
radiobutton3 = Radiobutton(rahmen, anchor='w', text='grosse Menge', value=5, variable=wert, command=Click)
radiobutton3.place(x=5, y=70, width=100, height=20)
radiobutton1.select()
# Label Text
labelText = Label(rahmen, text=str(wert.get()) + ' Liter')
labelText.place(x=5, y=5, width=100, height=20)
wert.trace('w', callback) # Wird aufgerufen wenn wert wechselt
fenster2.mainloop()
2. Beispiel:
Erst das Menü:
from tkinter import *
from radio import *
def radio():
app=radio=Radio()
app.radio()
fenster=Tk()
fenster.geometry("850x850")
fenster.title("Beispiel-Menue")
rahmen=Frame(fenster, relief="ridge", borderwidth=5)
rahmen.pack(fill="both", expand=1)
menubar = Menu(fenster)
dateimenu = Menu(menubar, tearoff=0)
dateimenu.add_command(label="Radio- Checkbutton", command=radio)
dateimenu.add_separator()
dateimenu.add_command(label="Ende", command=fenster.quit)
menubar.add_cascade(label="Datei", menu=dateimenu)
fenster.config(menu=menubar)
fenster.mainloop()
Dann das 1. Beispiel in der Klasse Radio:
from tkinter import *
class Radio():
def radio(self):
fenster2 = Tk()
fenster2.title('Radio')
fenster2.geometry('420x225')
# Rahmen Radiobutton
rahmen = Frame(fenster2)
rahmen.place(x=5, y=5, width=310, height=180)
def Click():
anzeige = str(wert.get()) + ' Liter'
labelText.config(text=anzeige)
def callback(*args): # Funktion wird aufgerufen wenn wert wechselt
print(wert.get()) #
wert = IntVar()
# Radiobutton
radiobutton1 = Radiobutton(rahmen, anchor='w', text='kleine Menge', value=2, variable=wert, command=Click)
radiobutton1.place(x=5, y=30, width=100, height=20)
radiobutton2 = Radiobutton(rahmen, anchor='w', text='mittlere Menge', value=3, variable=wert, command=Click)
radiobutton2.place(x=5, y=50, width=100, height=20)
radiobutton3 = Radiobutton(rahmen, anchor='w', text='grosse Menge', value=5, variable=wert, command=Click)
radiobutton3.place(x=5, y=70, width=100, height=20)
radiobutton1.select()
# Label Text
labelText = Label(rahmen, text=str(wert.get()) + ' Liter')
labelText.place(x=5, y=5, width=100, height=20)
wert.trace('w', callback) # Wird aufgerufen wenn wert wechselt
fenster2.mainloop()