Adam Sirrelle
Adam Sirrelle

Reputation: 397

PyQt How can I prevent hovering over a QMenu from clearing the Qstatusbar?

I am using the QStatusBar to print information for how many items are in a list.

This works well, however when I hover over any of the QMenu icons it clears all data from the QStatus, leaving it blank.

I'm working in windows, and I believe that it's something native that I need to break the connection of that keeps trying to update the statusbar with new information, as I wasn't having this issue while running my window from Maya.

Any ideas for how I could fix this would be great! I'd rather not create a new widget to hold this information.

Upvotes: 0

Views: 660

Answers (1)

mFoxRU
mFoxRU

Reputation: 490

There are different ways to

Simplest way is to add QLabel to status bar, set it's stretch to a non-zero value and change Label's text instead.

self.status_label = QtGui.QLabel()
self.ui.statusbar.addPermanentWidget(self.status_label, 100)
self.status_label.setText('wow such label')

Another way is to install event filter on QStatusBar, either via subclassing or monkey patching. Example of the latter:

class MainWindow(QMainWindow):

    def __init__(self):
        ...
        self.statusBar().eventFilter = self.event_filter
        self.installEventFilter(self.statusBar())
        ...

    @staticmethod
    def event_filter(_, event):
        if event.type() == QtCore.QEvent.StatusTip:
            return True
        return False

Upvotes: 2

Related Questions