Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 12, 2010 16:13:53

SHS
От:
Зарегистрирован: 2010-12-10
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

pyqlSignal has no attribute connect

Сабж.
Не могу понять что не так.

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from Ui_form import *


class DoWebWork(QThread):


strSignal = pyqtSignal(str)
lblSignal = pyqtSignal(str)

def __init__(self, **args):
QThread.__init__(self)

def run(self):
self.myfunc()

def myfunc(self):
var1 = "Hello"
var2 = "Bye!"
self.strSignal.emit(var1)
self.lblSignal.emit(var2)


class MainForm(QMainWindow):


def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.ui = Ui_MainForm()
self.ui.setupUi(self)

def pushButton_OnClick(self):
t = Worker()
t.start()
Worker.strSignal.connect(self.addToCombo)
Worker.lblSignal.connect(self.setLabel)

@pyqtSlot()
def setLabel(self, strTxt):
self.ui.myLabel.setText(strTxt)

@pyqtSlot()
def addToCombo(self, strName):
self.ui.comboBox.addItem(strName)


if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
myapp = MainForm()
myapp.show()
sys.exit(app.exec_())



Отредактировано (Дек. 12, 2010 16:14:36)

Офлайн

#2 Дек. 13, 2010 02:39:52

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

pyqlSignal has no attribute connect

1. метод pushButton_OnClick() заменить на:

    def pushButton_OnClick(self):
self.t = DoWebWork()
self.t.strSignal.connect(self.addToCombo)
self.t.lblSignal.connect(self.setLabel)
self.t.start()
На сигналы нужно сначала подписатся, и только потом запускать поток.
На объект потока должен кто-то ссылатся, иначе при выходе из метода pushButton_OnClick() он будет убит сборщиком мусора. Поэтому правильно self.t = DoWebWork() а не t = DoWebWork()

2. Заменить декораторы @pyqtSlot() на @pyqtSlot(str)



Офлайн

#3 Дек. 13, 2010 04:06:41

SHS
От:
Зарегистрирован: 2010-12-10
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

pyqlSignal has no attribute connect

Благодарю. Работает.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version