Я изучаю сигналы и слоты, и я смущен этой ситуацией.Сигналы и слоты в двух разных классах
Контекст: У меня есть метод в ClassA, который должен излучать сигнал (из рабочего потока) в ClassB (в основном потоке). Рабочий поток выполняет некоторую обработку с большой нагрузкой, а основной поток обновляет индикатор выполнения в пользовательском интерфейсе. Мне нужен рабочий поток для передачи сигналов в основной поток для обновления пользовательского интерфейса.
Я не уверен, как передавать сигнал между двумя разными классами. Прямо сейчас у меня есть первый класс, создающий объект сигнала (Communicate), подключайте его к методу во втором классе и затем эмулируйте, когда он готов. Это вызывает ошибку seg, поэтому я четко делаю что-то неправильно.
У меня есть следующий класс сигнала:
class Communicate(QtCore.QObject):
update_progress = QtCore.Signal()
Вот метод в ClassA, рабочий поток:
def methodInClassA(self, filename):
c = Communicate()
c.update_progress.connect(ClassB.set_progress)
print "emitting"
c.update_progress.emit()
...
Вот метод в ClassB, тот обновляя индикатор прогресса в Пользовательский интерфейс:
class ClassB(QtGui.QDialog, classB.Ui_Dialog):
def __init__(self, parent=None):
super(ClassB, self).__init__(parent)
self.setupUi(self)
def set_progress(self):
print "RECEIVED"
sender = self.sender()
self.progressBar.setValue(100)
У меня есть основной поток, создающий экземпляр класса B, и у меня есть метод, который обновляет значение прогресса для этого объекта класса. Я подключил сигнал к этому методу. Это фиксировало это. Спасибо! – Diana