各位達人,遇到一個奇怪的問題:python3.7+pyqt5,滑鼠劃過選單欄時狀態欄內容就會消失
見下圖:


代碼如下:
Qt Designer自動生成的代碼:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(600, 400)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/png/Resource/Python.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
MainWindow.setWindowIcon(icon)
MainWindow.setToolTipDuration(-1)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pb_open = QtWidgets.QPushButton(self.centralwidget)
self.pb_open.setGeometry(QtCore.QRect(180, 140, 81, 41))
self.pb_open.setObjectName("pb_open")
self.pb_close = QtWidgets.QPushButton(self.centralwidget)
self.pb_close.setGeometry(QtCore.QRect(310, 140, 81, 41))
self.pb_close.setObjectName("pb_close")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 600, 23))
self.menubar.setObjectName("menubar")
self.menu_F = QtWidgets.QMenu(self.menubar)
self.menu_F.setObjectName("menu_F")
self.menu_O = QtWidgets.QMenu(self.menubar)
self.menu_O.setObjectName("menu_O")
self.menu_A = QtWidgets.QMenu(self.menubar)
self.menu_A.setObjectName("menu_A")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.toolBar = QtWidgets.QToolBar(MainWindow)
self.toolBar.setObjectName("toolBar")
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
self.action_open = QtWidgets.QAction(MainWindow)
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(":/png/Resource/open.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.action_open.setIcon(icon1)
self.action_open.setObjectName("action_open")
self.action_about = QtWidgets.QAction(MainWindow)
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap(":/png/Resource/about.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.action_about.setIcon(icon2)
self.action_about.setObjectName("action_about")
self.action_save = QtWidgets.QAction(MainWindow)
icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap(":/png/Resource/save.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.action_save.setIcon(icon3)
self.action_save.setObjectName("action_save")
self.action_exit = QtWidgets.QAction(MainWindow)
icon4 = QtGui.QIcon()
icon4.addPixmap(QtGui.QPixmap(":/png/Resource/exit.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.action_exit.setIcon(icon4)
self.action_exit.setObjectName("action_exit")
self.action_option = QtWidgets.QAction(MainWindow)
icon5 = QtGui.QIcon()
icon5.addPixmap(QtGui.QPixmap(":/png/Resource/option.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.action_option.setIcon(icon5)
self.action_option.setObjectName("action_option")
self.menu_F.addAction(self.action_open)
self.menu_F.addAction(self.action_save)
self.menu_F.addSeparator()
self.menu_F.addAction(self.action_exit)
self.menu_O.addAction(self.action_option)
self.menu_A.addAction(self.action_about)
self.menubar.addAction(self.menu_F.menuAction())
self.menubar.addAction(self.menu_O.menuAction())
self.menubar.addAction(self.menu_A.menuAction())
self.toolBar.addAction(self.action_open)
self.toolBar.addAction(self.action_save)
self.toolBar.addSeparator()
self.toolBar.addAction(self.action_option)
self.toolBar.addAction(self.action_about)
self.toolBar.addSeparator()
self.toolBar.addAction(self.action_exit)
self.retranslateUi(MainWindow)
self.pb_close.clicked.connect(MainWindow.close)
self.action_exit.triggered.connect(MainWindow.close)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
MainWindow.setToolTip(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:10pt; color:#000000;\">這是一個 </span><a href=https://bbs.csdn.net/"www.baidu.com\"><span style=\" font-size:10pt; font-weight:600; text-decoration: underline; color:#0000ff;\">氣泡提示</span></a><span style=\" font-size:10pt; color:#000000;\">!</span></p></body></html>"))
self.pb_open.setText(_translate("MainWindow", "打開檔案"))
self.pb_close.setText(_translate("MainWindow", "關閉視窗"))
self.menu_F.setTitle(_translate("MainWindow", "檔案(&F)"))
self.menu_O.setTitle(_translate("MainWindow", "編輯(&E)"))
self.menu_A.setTitle(_translate("MainWindow", "幫助(&H)"))
self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar"))
self.action_open.setText(_translate("MainWindow", "打開(&O)"))
self.action_open.setShortcut(_translate("MainWindow", "Ctrl+O"))
self.action_about.setText(_translate("MainWindow", "關于(&A)"))
self.action_about.setShortcut(_translate("MainWindow", "Ctrl+A"))
self.action_save.setText(_translate("MainWindow", "保存(&S)"))
self.action_save.setShortcut(_translate("MainWindow", "Ctrl+S"))
self.action_exit.setText(_translate("MainWindow", "退出(&X)"))
self.action_exit.setShortcut(_translate("MainWindow", "Ctrl+X"))
self.action_option.setText(_translate("MainWindow", "選項(&P)"))
self.action_option.setShortcut(_translate("MainWindow", "Ctrl+P"))
import Resource_rc
自己寫的視窗類:
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QFileDialog
import MainWindowTemplate
class MyWindow(QtWidgets.QMainWindow, MainWindowTemplate.Ui_MainWindow):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
self.setupUi(self)
self.init_ui()
self.pb_open.clicked.connect(self.open_file)
self.action_open.triggered.connect(self.open_file)
def init_ui(self):
self.setWindowTitle('PyQt MainWindow 模板')
self.resize(600, 400)
self.move_center()
self.status = self.statusBar()
self.status.showMessage('這是狀態欄。')
def move_center(self):
size_screen = QtWidgets.QDesktopWidget().screenGeometry()
size_window = self.geometry()
x = int((size_screen.width()-size_window.width())/2)
y = int((size_screen.height()-size_window.height())/2)
self.move(x, y)
def open_file(self):
file, ok = QFileDialog.getOpenFileName(self, '打開檔案', 'J:\\', '所有檔案(*.*);;文本檔案(*.txt)')
if ok:
self.status.showMessage(file)
主函式:
import sys
from PyQt5 import QtWidgets
import MyWindow
import ctypes
def hide_window():
wnd_cmd = ctypes.windll.kernel32.GetConsoleWindow()
if wnd_cmd != 0:
ctypes.windll.user32.ShowWindow(wnd_cmd, 0)
ctypes.windll.kernel32.CloseHandle(wnd_cmd)
def main():
app = QtWidgets.QApplication(sys.argv)
window = MyWindow.MyWindow()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
hide_window()
main()
uj5u.com熱心網友回復:
showMessage() 有一個 timeout 引數,標識超時時間,當超過這個時長時,文本就會消失。如果不設定 timeout,則會一直顯示,除非主動呼叫 clearMessage()。
uj5u.com熱心網友回復:
timeout引數未設,文本消失是因為滑鼠劃過了選單欄,只要滑鼠不劃過選單欄,等多久文本都不會消失。
uj5u.com熱心網友回復:
你好,我也遇到了同樣的問題,請問解決了嗎,我試了下使用QTimer方法可以讓訊息一直顯示轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/226692.html
下一篇:python 多行程
