Die unten aufgeführten Beispiele wurde aus einem umfangreicheren Programm reduziert und sollen nur das Problem verdeutlichen.
Das 1. Beispiel funktioniert. Wenn ich jedoch den gleichen Code in einer Klasse ausführe enthält die Variable 'wert'
und somit 'anzeige' immer 0. Das gleiche Problem habe ich mit Checkbuttons. Habe unterschiedliche Varianten versucht. komme einfach nicht dahinter. Hilfe !
1. Beispiel Wert enthält 2, 3 oder 5 wie gewünscht
Code: Alles auswählen
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())
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: Wert immer Null
Im 2. Beispiel wird aus einem Menü die Klasse 'radio' aufgerufen:
Zuerst das Menü in der Datei 'menue.py'. In der Variablen 'wert' steht immer Null.
Code: Alles auswählen
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()
Code: Alles auswählen
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())
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()