等级:初学者
我在Windows 7 32位上使用python v2.7和wxPython v3.0。
我的应用:我有3节课。一个班级为gui(wx.Frame)
,其他班级为TestThread(Thread)
,第三班级为labels()
。
问题:我正在尝试在gui(wx.Frame)
类中创建TestThread(Thread)
类的对象,但是我收到的错误如下所示:
Traceback (most recent call last):
File "C:\test\post.py", line 11, in <module>
class TestThread(Thread):
File "C:\test\post.py", line 12, in TestThread
guiObj = gui()
NameError: name 'gui' is not defined
但是,如果我尝试从此createPanels()
gui(wx.Frame)
类调用TestThread(Thread)
类的wx.CallAfter(gui().createPanels())
,则会出现以下错误:
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Python27\lib\threading.py", line 810, in __bootstrap_inner
self.run()
File "C:\test\post.py", line 24, in run
wx.CallAfter(gui().createPanels())
TypeError: __init__() takes exactly 4 arguments (1 given)
我认为原因与__init__()
的{{1}}有关
我不明白原因。
更新:我尝试在gui(wx.Frame)
类中创建labels()
类的对象,我得到的错误与上面第一种情况中显示的相同。这个TestThread(Thread)
课有什么特别之处吗?
下面提供了完整的代码,可以downloaded here以避免出现身份问题:
TestThread(Thread)
感谢您的时间!
答案 0 :(得分:1)
第一期:
Python首次运行文件时执行 guiObj = gui()
,这会导致两个问题:
gui
TestThread
的所有实例都具有相同的gui
实例要解决这两个问题,您必须将guiObj = gui()
放在TestThread
如果您只想修复第一个,请在声明gui
之前声明TestThread
。
第二期:
使用gui()
是错误的,因为gui
的构造函数有三个参数(实际上是四个,但第一个是隐式的。你必须用三个参数调用它,就像你在最后一样做该计划:gui(parent=None, id=-1, title="Test")