Я хочу это сделать: Существует класс под названием «Главная». Существует еще один класс, называемый «aClass». И есть класс, который называется «Thread». Это наш класс потоков. «Главный» - наш основной класс, и мы начинаем наш класс Thread из основного класса. Когда начат наш класс Thread, он испускает сигнал функции run() ... Классы «Основной» и «Класс» пытаются поймать эти сигналы. «Основной» класс способен поймать сигнал, который испускался из класса Thread, но «aClass» не может поймать тот же сигнал, потому что я не запускал QThread из «aClass». Я только определил его в «aClass».Как испустить один и тот же сигнал для 2 классов от QThread
Вот коды:
#!/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