python QThread.run 参数 - 版本间有变化吗?

1 投票
1 回答
1035 浏览
提问于 2025-04-16 01:18

在我的代码中(python2.6,PyQt4),我做了这样的事情:

def myRun():
    doStuff
thread = QtCore.QThread()
thread.run = myRun
thread.start()

在我的Gentoo系统上,这一切运行得很好。但是在Ubuntu(9.10,Karmic Koala)上就不行了,它提示:

类型错误:myRun()不接受参数(给了1个)

QT有什么变化吗?我该如何让它在两台机器上都能正常工作呢?

谢谢!
Nathan

1 个回答

2

我不太明白你是怎么做到的;你应该是要创建一个QThread的子类,并重写run()方法。出现“没有参数”的错误是因为QT运行时试图把“self”作为类方法的第一个参数传递给你。下面的代码更接近你需要的:

def myThread(QtCore.QThread):
    def run(self):
        pass

thread = myThread()
thread.start()

更新:这段代码和原来的更相符了一些。

def myRun():
    doStuff

thread = QtCore.QThread()
thread.run = lambda self: myRun()
thread.start()

撰写回答