我的任务目标是允许按一个按钮启动两个进程,两个进程同时在不同的QThreads上运行。
我的代码结构如下(简化)
class Main_Window():
# My UI stuff goes here
class worker1(QtCore.QObject):
def __init__(self):
...
def run1():
...
class worker2(QtCore.QObject):
def __init__(self):
...
def run2():
...
app = QtGui.QApplication(sys.argv)
myapp = Main_Window()
thr1 = QtCore.QThread()
thr2 = QtCore.QThread()
work1 = worker1()
work2 = worker2()
work1.moveToThread(thr1)
work2.moveToThread(thr2)
# I have a signal coming in from main thread
app.connect(myapp, QtCore.SIGNAL('start1'), work1.run1())
app.connect(myapp, QtCore.SIGNAL('start1'), work2.run2())
thr1.start()
thr2.start()
如果我想设置两个Qthreads,这种QThread编码是不正确的吗?
我得到了一个"分段错误"当我尝试启动程序时,但是当我第二次使用app.connect时,它运行正常。
我想知道是否有人能告诉我哪里出错了。
谢谢!
答案 0 :(得分:0)
当您使用以下信号连接信号时
app.connect(myapp, QtCore.SIGNAL('start1'), work1.run1())
您实际上正在执行运行功能,而不仅仅是连接它。你想省略"()"或者python执行该函数并尝试连接它返回的任何内容。
修改强>
另外两条建议回应你的评论说你拿出了"()"。 首先,我从未见过有人在使用QtThread类时重命名run函数,你可能想尝试相同的代码,其中run1和run2实际上只是命名为" run"。查看此主题以获得一些好的示例: How to use QThread correctly in pyqt with moveToThread()?
其次,您可以发布实际错误吗?它喜欢这个帖子中的那个: Is this PyQt 4 python bug or wrongly behaving code?