我试图编写一个GUI界面来帮助加快工作中的文书工作。我一直在创建自定义类,继承自tkinter的类以及我编写的小部件类。当我将整个模块写在一个.py文件中时,一切正常。现在,我将它作为一个包分成几个文件,它将不再允许我在widget.__init__
class widget:
def __init__(self,master,text=None,trace=None):
self.master = master
self._text = StringVar(self.master,value=text)
self._trace = trace
self.trace = self._trace
@property
def text(self):
return self._text.get()
@text.setter
def text(self,val):
self._text.set(val)
@property
def trace(self):
return self._trace
@trace.setter
def trace(self,val):
self._trace = val
self._text.trace('w', lambda *args, **kwargs:val(*args,**kwargs))
所有窗口小部件子类都继承自窗口小部件类。这允许他们全部使用textvariable而不是变量,并允许self.text用于获取或设置文本值。正如我所说,它在单个模块中有效,但现在它在一个包中,它会抛出:
TclError: can't set "PY_VARX"
任何建议表示赞赏。谢谢!