Article View: pl.comp.lang.python
Article #28140Przekazywanie obiektu przez emit()
From: OMS Diver
Date: Tue, 31 May 2011 15:02
Date: Tue, 31 May 2011 15:02
73 lines
3700 bytes
3700 bytes
Może coś pieprzę na potęgę, ale googlając to i ówdzie znalazłem informacje o przekazywaniu obiektu w wyniku wywolania
metody emit(). Problem w tym, że wykonując kod żadne błedy nie są zwracane, a nie działa. Ale po kolei
Najpierw definicja klas bazowych
----------
class signalMessage():
def __init__(self):
pass
----------
class qThread(QtCore.QThread):
sigProgress = QtCore.pyqtSignal(dict)
sigTable = QtCore.pyqtSignal(dict)
def __init__(self):
QtCore.QThread.__init__(self)
# Setup progress attributes #
self.cTimer = QtCore.QTimer()
# Setup slots and signals #
QtCore.QObject.connect(self.cTimer, QtCore.SIGNAL("timeout()"), self.sigProgressEmit)
# Setup signal message object #
self.mesProgress = signalMessage()
setattr(self.mesProgress, "timeStart", datetime.datetime.now())
setattr(self.mesProgress, "timeNow", datetime.datetime.now())
setattr(self.mesProgress, "progressStart", 0)
setattr(self.mesProgress, "progressValue", 0)
setattr(self.mesProgress, "progressEnd", 0)
def sigProgressEmit(self):
self.mesProgress.timeNow = datetime.datetime.now()
self.sigProgress.emit(self.mesProgress)
time.sleep(0.005)
def sigTableEmit(self):
self.sigTable.emit(self.mesTable)
time.sleep(0.005)
potem definicja klasy dziedziczącej
----------
class qThread_Child(qThread):
def __init__(self):
qThread.__init__(self)
def run(self):
self.cTimer.start(100)
>>> Tutaj coś się dzieje przez jakiś czas <<<
self.cTimer.stop()
potem definicja okna
----------
formclass, baseclass = uic.loadUiType("gui/dlgProcess.ui")
class DialogProcess(baseclass, formclass):
def __init__(self, dbConnection):
baseclass.__init__(self)
self.setupUi(self)
# Setup QThread #
self.qThread = qThread()
# Setup GUI #
>>> jakieś parametry elementów okna <<<
# Setup Signals and Slots #
QtCore.QObject.connect(self.btnExecute, QtCore.SIGNAL("clicked()"), self.execute)
self.qThread.sigProgress.connect(self.progressUpdate)
def execute(self):
self.qThread.start()
def progressUpdate(self, mesProgress):
self.lblTimer.setText(mesProgress.timerNow)
self.barProgress.setMinimum(mesProgress.progressStart)
self.barProgress.setValue(mesProgress.progressValue)
self.barProgress.setMaximum(mesProgress.progressEnd)
No i problem taki, że w metodzie progressUpdate klasy DialogProcess nie dzieje się nic. Tak jakby nie była wywoływana
przez połączenie
self.qThread.sigProgress.connect(self.progressUpdate)
Technical Details
Message-ID:
<is2vv0$cjt$1@newsread.aster.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!nntp.aster.pl!newsread1.aster.pl!newsread.aster.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!nntp.aster.pl!newsread1.aster.pl!newsread.aster.pl!not-for-mail From: OMS Diver <omsdiver@gmail.com> Newsgroups: pl.comp.lang.python Subject: Przekazywanie obiektu przez emit() Date: Tue, 31 May 2011 17:02:56 +0200 Organization: Aster Sp. z o.o. Lines: 74 Message-ID: <is2vv0$cjt$1@newsread.aster.pl> NNTP-Posting-Host: 145-tar-2.acn.waw.pl Mime-Version: 1.0 X-Trace: newsread.aster.pl 1306854176 12925 212.76.49.145 (31 May 2011 15:02:56 GMT) X-Complaints-To: abuse@aster.pl NNTP-Posting-Date: Tue, 31 May 2011 15:02:56 +0000 (UTC) User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit