将鼠标悬停在菜单项上时 PyQt5 状态栏被隐藏

PyQt5 Statusbar gets hidden when hovering over Menu item

我正在尝试通过教程学习 PyQt5。我正在使用 Python 2.7 和 PyQt5。

此代码应创建一个带有 "View" 条目的菜单栏。在 "View" 条目中,您应该能够选中或取消选中一个选项以显示或隐藏下面的状态栏。

import sys
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class Example(QMainWindow):

    def __init__(self):
        super(Example,self).__init__()

        self.initUI()


    def initUI(self):         

        self.statusbar = self.statusBar()
        self.statusbar.showMessage('Ready')

        menubar = self.menuBar()
        viewMenu = menubar.addMenu('View')
        viewMenu.menuAction().setStatusTip("File Menu is hovered")

        self.myMessage = QLabel()
        self.myMessage.setText("Hello")

        self.statusbar.addPermanentWidget(self.myMessage)

        viewStatAct = QAction('View statusbar', self, checkable=True)
        #viewStatAct.setStatusTip('View statusbar')
        viewStatAct.setChecked(True)
        viewStatAct.triggered.connect(self.toggleMenu)

        viewMenu.addAction(viewStatAct)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Check menu')    
        self.show()

    def toggleMenu(self, state):

        if state:
            self.statusBar().show()
        else:
            self.statusBar().hide()


if __name__ == '__main__':
    app=0
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

问题是,但是,当我将鼠标移到 "View" 条目上时,状态栏完全消失,并且不会像预期的那样对菜单栏上的任何点击做出反应。

我查看了其他教程、SO 中的问题和文档页面都无济于事。

有什么想法吗?提前致谢!

假设您总是希望显示一些默认状态文本,将以下方法添加到您的 class 应该可以解决问题。

def event(self, e):
    if e.type() == QtCore.QEvent.StatusTip:
        if e.tip() == '':
            e = QtGui.QStatusTipEvent('Ready')  # Set this to whatever you like
    return super().event(e)