Aufruf einer Funktion in Radiobutton verlangt unbekanntes Argument
Verfasst: Sonntag 29. April 2018, 19:45
Hello @all,
ich habe folgendes Problem in einer Klassendefinition :
# Tkinter
# Definition einer Klasse Schalter
from Tkinter import *
root = Tk()
v = IntVar()
canvas_width = 50
canvas_height = 50
sqr_gry_arrow_red_img = PhotoImage(file="Rechteck_grau_mit_Pfeil_rot_klein.gif")
sqr_gry_circle_grn_img = PhotoImage(file="Rechteck_grau_mit_Kreis_durchstrichen_gruen_klein.gif")
class Schalter:
def upper_radio_button_pressed(self):
self.canvas = Canvas(root, width=canvas_width, height=canvas_height)
self.canvas.create_image(10,10, anchor=NW, image=sqr_gry_arrow_red_img)
self.canvas.place(x = 150, y = 40, width=50, height=50)
Radiobutton(root,
text="Schalter ON",
padx = 10,
variable=v,
value=1,
command=upper_radio_button_pressed).place(x = 20,
y = 30, width=100, height=30)
def lower_radio_button_pressed(self):
self.canvas = Canvas(root, width=canvas_width, height=canvas_height)
self.canvas.create_image(10,10, anchor=NW, image=sqr_gry_circle_grn_img)
self.canvas.place(x = 150, y = 40, width=50, height=50)
Radiobutton(root,
text="Schalter OFF",
padx = 10,
variable=v,
value=2,
command=lower_radio_button_pressed)place(x = 20,
y = 70, width=120, height=30)
def __init__(self):
self.lower_radio_button_pressed()
schalter_1 = Schalter()
def main():
# width x height + x_offset + y_offset:
root.geometry("500x200+30+30")
root.mainloop()
if __name__ == '__main__':
main()
innerhalb der Radiobuttons gibt es den Aufruf der Funktionen :
command=lower_radio_button_pressed bzw. command=upper_radio_button_pressed
das führt dazu, dass wenn man den Button betätigt eine Fehlermeldung kommt :
exception in Tkinter callback
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1536, in __call__
return self.func(*args)
TypeError: upper_radio_button_pressed() takes exactly 1 argument (0 given)
ich habe schon verschiedenes ausprobiert : nur ( ) oder ( self )
oder self.upper_radio_... leider alles ohne Erfolg. Die Funktionen upper_radio_button_pressed() und lower_radio_button_pressed() haben
aber keine Parameter, deshalb verstehe ich das nicht. ich kann hier keine Dateien anhängen ( finde jedenfalls nichts ). Die GIFS sind kleine selbstkreierte Symbole mit 25x25 Punkte spielt keine Rolle, könnt Ihr selbst erzeugen.
Kann mir jemand helfen ? Vielen Dank !
H.Lech
ich habe folgendes Problem in einer Klassendefinition :
# Tkinter
# Definition einer Klasse Schalter
from Tkinter import *
root = Tk()
v = IntVar()
canvas_width = 50
canvas_height = 50
sqr_gry_arrow_red_img = PhotoImage(file="Rechteck_grau_mit_Pfeil_rot_klein.gif")
sqr_gry_circle_grn_img = PhotoImage(file="Rechteck_grau_mit_Kreis_durchstrichen_gruen_klein.gif")
class Schalter:
def upper_radio_button_pressed(self):
self.canvas = Canvas(root, width=canvas_width, height=canvas_height)
self.canvas.create_image(10,10, anchor=NW, image=sqr_gry_arrow_red_img)
self.canvas.place(x = 150, y = 40, width=50, height=50)
Radiobutton(root,
text="Schalter ON",
padx = 10,
variable=v,
value=1,
command=upper_radio_button_pressed).place(x = 20,
y = 30, width=100, height=30)
def lower_radio_button_pressed(self):
self.canvas = Canvas(root, width=canvas_width, height=canvas_height)
self.canvas.create_image(10,10, anchor=NW, image=sqr_gry_circle_grn_img)
self.canvas.place(x = 150, y = 40, width=50, height=50)
Radiobutton(root,
text="Schalter OFF",
padx = 10,
variable=v,
value=2,
command=lower_radio_button_pressed)place(x = 20,
y = 70, width=120, height=30)
def __init__(self):
self.lower_radio_button_pressed()
schalter_1 = Schalter()
def main():
# width x height + x_offset + y_offset:
root.geometry("500x200+30+30")
root.mainloop()
if __name__ == '__main__':
main()
innerhalb der Radiobuttons gibt es den Aufruf der Funktionen :
command=lower_radio_button_pressed bzw. command=upper_radio_button_pressed
das führt dazu, dass wenn man den Button betätigt eine Fehlermeldung kommt :
exception in Tkinter callback
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1536, in __call__
return self.func(*args)
TypeError: upper_radio_button_pressed() takes exactly 1 argument (0 given)
ich habe schon verschiedenes ausprobiert : nur ( ) oder ( self )
oder self.upper_radio_... leider alles ohne Erfolg. Die Funktionen upper_radio_button_pressed() und lower_radio_button_pressed() haben
aber keine Parameter, deshalb verstehe ich das nicht. ich kann hier keine Dateien anhängen ( finde jedenfalls nichts ). Die GIFS sind kleine selbstkreierte Symbole mit 25x25 Punkte spielt keine Rolle, könnt Ihr selbst erzeugen.
Kann mir jemand helfen ? Vielen Dank !
H.Lech