🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #28140

Przekazywanie obiektu przez emit()

#28140
From: OMS Diver
Date: Tue, 31 May 2011 15:02
73 lines
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-mail

Show 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