[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