私はしたい: 'Main'と呼ばれるクラスがあります。 'aClass'と呼ばれる別のクラスがあります。そして、「スレッド」と呼ばれるクラスがあります。それは私たちのスレッドクラスです。 メインはメインクラスで、メインクラスからスレッドクラスを開始します。 Threadクラスを起動すると、run()関数からシグナルが出力されます... 'Main'クラスと 'aClass'クラスは、これらのシグナルを捕捉しようとします。 'Main'クラスはThreadクラスから生成されたシグナルを捕捉することができますが、 'aClass'からQThreadを開始しなかったため 'aClass'は同じ信号を捕捉できません。私は 'aClass'で定義しました。QThreadから2つのクラスに対して同じシグナルを出す方法
#!/usr/bin/env python
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
class Main(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setWindowTitle("Test")
self.aClass = aClass()
self.thread = Thread()
self.thread.printMessage.connect(self.write)
self.initUI()
def initUI(self):
self.button = QPushButton("Start Process", self)
self.button.clicked.connect(self.startProcess)
def startProcess(self):
self.thread.start()
def terminateProcess(self):
self.thread.terminate()
def write(self):
print "Main: hello world..."
class aClass(object):
def __init__(self):
print "aClass: I have been started..."
self.thread = Thread()
self.thread.printMessage.connect(self.write)
def write(self):
print "aClass: hello world..."
class Thread(QThread):
printMessage = pyqtSignal()
def __init__(self):
QThread.__init__(self)
print "Thread: I have been started..."
def run(self):
self.printMessage.emit()
print "Thread: I emitted the message."
if __name__ == "__main__":
app = QApplication(sys.argv)
root = Main()
root.show()
app.exec_()
結果:ここで
はコードです プログラムが起動すると、出力は次のとおりです。
aClass: I have been started...
Thread: I have been started...
Thread: I have been started...
私は、 '開始プロセス' ボタンをクリックすると、出力は次のとおりです。
Thread: I emitted the message.
Main: hello world...
合計出力:
aClass: I have been started...
Thread: I have been started...
Thread: I have been started...
Thread: I emitted the message.
Main: hello world...
私は「手続きの開始]をクリックしたときに取得したい出力:
Thread: I emitted the message.
Main: hello world...
aClass: hello world...
私はこの結果をしたいが、私は(self.thread.startを使用したくない)コマンドAClassは「から「私は...一度だけのためのスレッドを実行するため
あなたは同じスレッドから同じ信号を取得しようとしていますか? –
はい。私の問題は解決されました。 – PIC16F84A