我正在使用Pyqt4在python中创建GUI。我想发送一个信号从主GUI到一个线程,以建立一个功能。我知道如何从线程发送信号到主GUI,但我不知道相反的事情。另外,我想传递一个带有信号的变量。
类似于:
class MainGUI()
def function
value = 5
self.emit(QtCore.Signal("Signal(int)"),value)
class thread(QtCore.QThread)
def _init_(self)
Qtcore.QThread._init_()
self.connect(Qt.SIGNAL("Signal(int)"),self.run())
def run(self,value):
time.sleep(value)因此,每次从主GUI发送信号时,我都希望在线程中并行运行函数,而不冻结GUI。
任何帮助都将不胜感激,杰特
发布于 2014-10-10 07:40:50
正确的方法是创建将被移动到线程中的对象。您不需要子类QtCore.QThread!
或多或少类似的事情(免责声明:我更多的是C++而不是Python):
myThread = QtCore.QThread()
testObject = YourClassWithSlots() # NO PARENT HERE
testObject.moveToThread(myThread)
myThread.start()从那时起,testObject的所有连接槽(默认连接类型)都将在线程myThread中运行。
有用的链接:
更多详情请浏览@Ezee
class YourClassWithSlots(QtCore.QObject) :
@Slot(int)
def havyTaskMethod(self, value) :
# long runing havy task
time.sleep(value)
self.myThread = QtCore.QThread(self)
self.testObject = YourClassWithSlots() # NO PARENT HERE
self.testObject.moveToThread(myThread) # this makes slots to be run in specified thread
self.myThread.start()
self.connect(Qt.SIGNAL("Signal(int)"), self.testObject.havyTaskMethod)https://stackoverflow.com/questions/26293556
复制相似问题