将鼠标悬停在菜单项上时 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)
我正在尝试通过教程学习 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)