Thread View: pl.comp.lang.python
2 messages
2 total messages
Started by OMS Diver
Tue, 31 May 2011 15:02
Przekazywanie obiektu przez emit()
Author: 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)
Re: Przekazywanie obiektu przez emit()
Author: OMS Diver
Date: Tue, 31 May 2011 15:04
Date: Tue, 31 May 2011 15:04
6 lines
1083 bytes
1083 bytes
Oczywiście zamiast sigProgress = QtCore.pyqtSignal(dict) sigTable = QtCore.pyqtSignal(dict) jest sigProgress = QtCore.pyqtSignal(object) sigTable = QtCore.pyqtSignal(object)
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads