如何将自定义对象的方法设置为widget callb

2024-09-27 07:18:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我定义了一个从Tkinter小部件继承的类。
现在,我想将一个回调绑定到其父窗口小部件,该回调实际上是自定义对象的一个方法。我该怎么做

目前,我有这样的想法:

from tkinter import *
from tkinter import ttk

class MyLabel(ttk.Label):

    def __init__(self, *args, **kwargs):
        ttk.Label.__init__(self, *args, **kwargs)
        self.ntimes = 0

    def test(self):
        self.ntimes += 1
        self.configure(
            text='Now the label has changed {} times'.format(self.ntimes)
        )

if __name__ == '__main__':
    root = Tk()
    f = ttk.Frame(root)
    f.grid()
    l = MyLabel(f, text='A label')
    l.grid()
    root.bind('<Left>', l.test)
    root.mainloop()

但我得到了一个错误:

TypeError: test() takes 1 positional argument but 2 were given

注意:这只是一个简化的示例;我本可以使用ttk.Label对象的textvariable选项来动态更新文本,但我想把重点放在我遇到的一般问题上


Tags: 对象fromtestimportselfinit部件tkinter

热门问题