Ich möchte das tun: Es gibt eine Klasse namens 'Main'. Es gibt eine andere Klasse namens'Class '. Und es gibt eine dritte Klasse namens "Thread". Es ist unsere Thread-Klasse. 'Main' ist unsere Hauptklasse und wir starten unsere Thread-Klasse aus der Main-Klasse. Wenn unsere Thread-Klasse gestartet wird, gibt sie ein Signal von der run() -Funktion aus ... 'Main' und 'aClass' Klassen versuchen, diese Signale abzufangen. 'Main' Klasse ist in der Lage, das Signal, das von der Thread-Klasse ausgegeben wurde, abzufangen, aber 'aClass' kann nicht dasselbe Signal empfangen, weil ich QThread nicht von 'aClass' gestartet habe. Ich habe es nur in 'aClass' definiert.Wie sende ich das gleiche Signal für 2 Klassen von QThread
Hier sind Codes:
#!/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_()
Das Ergebnis: Wenn das Programm startet, ist die Ausgabe: 'Start-Prozess' Taste
aClass: I have been started...
Thread: I have been started...
Thread: I have been started...
Wenn ich auf klicken, wird die Ausgabe lautet:
Thread: I emitted the message.
Main: hello world...
Gesamtleistung:
aClass: I have been started...
Thread: I have been started...
Thread: I have been started...
Thread: I emitted the message.
Main: hello world...
Die Ausgabe, die ich zu bekommen, wenn ich ‚Prozess starten‘ klicken:
Thread: I emitted the message.
Main: hello world...
aClass: hello world...
möchte ich dieses Ergebnis, aber ich will nicht von ‚aClass self.thread.start() Befehl verwenden 'weil ich will Thread ausgeführt nur für eine Zeit ...
Sind Sie versuchen, das gleiche Signal aus dem gleichen Thread zu bekommen? –
Ja. Mein Problem ist gelöst. – PIC16F84A