Class and tkinter problem

Paulo da Silva p_d_a_s_i_l_v_a_ns at nonetnoaddress.pt
Thu Jan 7 12:38:04 EST 2021


Às 07:29 de 07/01/21, Paulo da Silva escreveu:
> Hi!
>> Does anybody know why cmd method isn't called when I change the button
> state (clicking on it) in this example?
> I know that this seems a weird class use. But why doesn't it work?
> Thanks.
>> class C:
> from tkinter import Checkbutton
> import tkinter
>> @staticmethod
> def cmd():
> print("Test")
>> top=tkinter.Tk()
> cb=Checkbutton(command=cmd)
> cb.pack()
>> @staticmethod
> def loop():
> C.top.mainloop()
>> c=C()
> c.loop()
>
After some experiments I found two solutions:
1)
class C:
 @staticmethod
 def cmd():
 print("Test")
class C: #@DuplicatedSignature
 from tkinter import Checkbutton
 import tkinter
 top=tkinter.Tk()
 cb=Checkbutton(command=C.cmd)
 cb.pack()
 @staticmethod
 def loop():
 C.top.mainloop()
c=C()
c.loop()
2)
class C:
 from tkinter import Checkbutton
 import tkinter
 @staticmethod
 def cmd():
 print("Test")
 top=tkinter.Tk()
 cb=Checkbutton(command=lambda : C.cmd())
 cb.pack()
 @staticmethod
 def loop():
 C.top.mainloop()
c=C()
c.loop()
This one as a sequence of the answer of Terry - thanks.
BTW, does anyone know I can I get the arguments eventually passed by the
Checkbutton event, or any other widget callback (*pargs, **kargs) using
this "solution"?


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /