[PyQt] Drag status message

David Boddie david at boddie.org.uk
Wed Dec 3 01:09:41 GMT 2008

On Sun, 30 Nov 2008 15:12:34 -0500, Ron Longo wrote:

> I've implemented my own drag operation in a view class.  In my
> mousePressEvent() I setup for possible drag event (e.g. save the location
> of the mouse press).  In mouseMoveEvent() if a drag is started (mouse
> button pressed and mouse moved) I initiate a drag event.  In this method I
> create a QDrag object then call its exec_() method.

OK, sounds good so far.

> During the drag operation I repeatedly get calls to my dragMoveEvent().  In
> this method, I want to check the position of the mouse cursor and update
> the status bar to provide user feedback.  I do this by calling
> self.setStatusTip().

Have you tried calling self.statusBar().showMessage() instead?

> When I run my application and perform a drag, I see nothing until the drag
> is completed.  I then see the status bar updated with the text passed to
> the last call made to setStatusTip().

If the above suggestion works then I have an idea why self.setStatusTip()
does not; otherwise, some more investigation will be required. :-)

> The call to QDrag's exec_() method takes control of the drag operation
> until the drag is completed.  Once the drag is completed exec_() returns.
>  Is exec_() crating a separate event loop?  Is there any way to force the
> main event loop to update the GUI so that my status message will appear
> during the drag operation?

exec_() is creating an event loop, but events should still be delivered to
the window. It could just be that changing the status tip on its own isn't
enough to display a new message.


More information about the PyQt mailing list