PyQt Как я могу предотвратить зависание над QMenu от очистки Qstatusbar?

Я использую QStatusBar распечатать информацию о количестве предметов в списке.

Это работает хорошо, однако, когда я наведите курсор на любой из QMenu Значки удаляют все данные из QStatus, оставляя их пустыми.

Я работаю в Windows, и я считаю, что это нечто родное, что мне нужно разорвать соединение, которое пытается обновить строку состояния с новой информацией, поскольку у меня не было этой проблемы при запуске моего окна из Maya.

Любые идеи о том, как я могу это исправить, были бы великолепны! Я бы не хотел создавать новый виджет для хранения этой информации.

1 ответ

Решение

Есть разные способы

Самый простой способ это добавить QLabel в строке состояния, установите его stretch в ненулевое значение и измените текст метки вместо.

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

Другой способ - установить фильтр событий на QStatusBar, либо используя подклассы, либо исправляя обезьяны. Пример последнего:

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
Другие вопросы по тегам