[PyQt] subtel problem with event handler when disconnect - reconnect the event from within the handler AND display QMsgbox ?
Grégory Starck
g.starck at gmail.com
Wed Oct 12 12:37:54 BST 2011
Hi dear list,
on windows7-64, with python32 (and also with python27) (-x86) and
pyqt-4.8.5-1:
First of all: I'm quite new with Qt (pyqt).. and so I don't know all of it,
even more specifically about the restrictions/exceptions/etc.., from far.
in a quite simple window (just a tableWidget and few buttons basically) :
I connected the itemChanged signal/event of the tableWidget to one of my
method. ( gui.tableWidget.itemChanged.connect(self.onCellChanged) )
but in this method I want to be able to eventually re-modify the value of
the item (depending on some conditions)..
but doing so re-generate a itemChanged event.. so in that case my method
was called 1 extra time that I don't want.
I used to work around that by : on begin of my method : I disconnect the
event itemChanged from my method. And on exit of my method I re-connect the
signal to it.
my question is : does it sound like all right to you ??
because with that I sometimes (but quite highly reproducible) get real crash
from QtCore.. but without any valuable detail. as far as I understood : it
could be a problem because I disconnect-reconnect the event handler from
within the handler itself AND ALSO, apparently, that I was also displaying a
QtGui.QMessageBox from within my method. (when I remove the display of the
Qmsgbox then the crash doesn't occur anymore, never, as far I could see).
Now I've totally work around the problem/crash by using a bool flag that I
initially set to False.
when my itemChanged event handler enters : it checks for the flag. if True
-> the method directly returns. Else it sets the flag to True and the method
executes normally. before returning from it I reset the flag to False.
So that if I change the value of the item in the method then the method will
still be called 1 extra time but I notice it thx to the flag.
Now with that I have all what I want and that doesn't crash anymore at all
like it was before.
but I was asking myself about why disconnect/reconnecting an event from the
handler could be "risky" like I experienced..
thx for any comment / feeling..
regards,
Greg.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20111012/6fff2a99/attachment.html>
More information about the PyQt
mailing list