On 07/01/2021 08:42, Christian Gollwitzer wrote:
Am 07.01.21 um 08:29 schrieb Paulo da Silva:
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
^^it works if you remove the staticmethod here
def cmd():
print("Test")
Maybe there is a bug in tkinter, that it doesn't work with static methods?
It has nothing to do with tkinter, a staticmethod object cannot be
called directly:
>>> class C:
@staticmethod
def cmd(): print("Hello")
cmd()
Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
class C:
File "<pyshell#28>", line 4, in C
cmd()
TypeError: 'staticmethod' object is not callable
You have to go through the descriptor protocol:
>>> class C:
@staticmethod
def cmd(): print("Hello")
>>> C.cmd()
Hello
I recommend that the OP use a more conventional stye and do the setup
outside the class or, better, in an instance of the class.
--
https://mail.python.org/mailman/listinfo/python-list