Есть форма в которую импортирую собственный класс (QObject).
Форма запускает поток QThread,
Поток QThread обращается к импортированному классу за методом.
Метод циклично сигнализирует.
Форма должна принимать эти сигналы и вписывать их значение в ListWidget. Но вот почему то не принимает…
Пробовал QThread'ом принимать сигнал, а потом передавать его на форму - не получилось тоже.
Как правильно принять сигнал?
#mainForm.py
# Форма содержит кнопку "GO" и ListWidget
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from Ui_form import *
from myclasses import MYCLASS
class DoWork(QThread):
def __init__(self):
QThread.__init__(self)
self.mycl = MYCLASS()
def run(self):
#Вызываем функцию из импортированного класса QObject
self.mycl.printMsg()
def __del__(self):
self.exiting = True
self.wait()
class MainForm(QMainWindow):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.ui = Ui_MainForm()
self.ui.setupUi(self)
self.ui.getBasesButton.clicked.connect(goButton_OnClick)
#Нажатие на кнопку GO
def goButton_OnClick(self):
self.mycl = MYCLASS()
self.t = DoWork()
self.mycl.strSignal.connect(self.addToList, type=Qt.QueuedConnection)
self.t.start()
#Слот добавляет полученный текст в ListWidget
@pyqtSlot(str)
def addToList(self, msg)
self.ui.listWidget.addItem(msg)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
myapp = MainForm()
myapp.show()
sys.exit(app.exec_())
#myclasses.py
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MYCLASS(QObject):
strSignal = pyqtSignal(str)
def __init__(self):
QObject.__init__(self)
def printMsg(self):
while True:
i += 1
self.strSignal.emit(str(i))
time.sleep(0.1)
if i == 10:
break