Python Function Calls The Wrong Method/target
The following program simulates a traffic light system with some buttons. The buttons appear correctly, but if I'm trying to call the method to create/change the LEDs, it ends up i
Solution 1:
Your error is on this line:
callthread=GUI()
The problem is that __init__
was defined as:
def__init__(self, num):
So either provide an argument when creating a GUI
object, or remove the num
argument from the __init__
method.
note: This answer applies to the code prior to your edit. After your edit you removed the num
argument from __init__
. You should no longer get the TypeError
with your edited code.
Solution 2:
Remove the num
argument from __init__()
and the self
argument from output()
since it is a static method.
Solution 3:
May be you should not make a static method and no need to make it global.
Remember dont try to subclass threading.Thread if are not clear about how it works. Instead use the following approach. It will do everything easy for you without sub classing thread.
try this:
class GUI()
def __init__(self):
window = Tk()
window.title('Ampel GUI')
self.window = Canvas(window, width=400, height=200)
self.window.pack()
button1 = Button(self.window, text="Press", command=lambda: pushbutton(25))
button1.pack()
button1.place(x=190, y=70)
button2 = Button(self.window, text="Press", command=lambda: pushbutton(12))
button2.pack()
button2.place(x=115, y=160)
(...)
button6 = Button(self.window, text="V2", command=lambda: pushbutton(22)) # V2
button6.pack()
button6.place(x=280, y=130)
window.mainloop()
def output(lampe, status):
if status == 0:
if lampe == 21:
self.window.create_oval(140, 30, 160, 10, fill="#FFA6A6")
if lampe == 20:
self.window.create_oval(170, 30, 190, 10, fill="#FAFAAA")
callthread=GUI()
callthread=threading.Thread(target=callthread.output, args=(21,0))
callthread.start()
Post a Comment for "Python Function Calls The Wrong Method/target"