私はGUIの外で新しいスレッドワーカーを作成しようとしています。 QThreadをサブクラス化すると期待通りに動作しますが、GUIは影響を受けません。私がmoveToThread技術を使用すると、私はGUIの完全なロックアップを取得します。私は誤ってメインスレッドに新しいスレッドを入れていると仮定しますが、私はそれを引き起こすために何をしているのか分かりません。メインスレッドをフリーズせずにstart2関数をどのように動作させることができますか?このサブクラス化に必要な説明QThreadとmoveToThreadの例
from PySide import QtGui, QtCore
import sys
import time
class THREAD(QtCore.QThread):
def __init__(self):
super(THREAD, self).__init__()
def run(self):
time.sleep(5)
print "done"
class WORKER(QtCore.QObject):
def __init__(self):
super(WORKER, self).__init__()
def run(self):
time.sleep(5)
print "done"
class GUI(QtGui.QDialog):
def __init__(self):
super(GUI, self).__init__()
mainLayout = QtGui.QHBoxLayout()
self.setLayout(mainLayout)
start1Button = QtGui.QPushButton("Start1")
start2Button = QtGui.QPushButton("Start2")
mainLayout.addWidget(start1Button)
mainLayout.addWidget(start2Button)
start1Button.clicked.connect(self.start1)
start2Button.clicked.connect(self.start2)
def start1(self):
self.myThread = THREAD()
self.myThread.start()
def start2(self):
myWorker = WORKER()
myThread = QtCore.QThread()
myThread.start()
myWorker.moveToThread(myThread)
myWorker.run()
def main():
app = QtGui.QApplication(sys.argv)
ex = GUI()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
は素晴らしい、あなたがekhumoroありがとう! – bneall