首頁 > 軟體

基於PyQt5實現狀態列(statusBar)顯示和隱藏功能

2022-08-16 18:03:53

首先,講述要解決的兩個問題以及解決問題的程式碼:

1、將滑鼠放置於選單欄上狀態列永久消失的問題(這個問題需要仔細觀察才能注意到)

    # 此覆蓋父類別函數: 覆蓋方法; 為了克服 將滑鼠放置於選單欄上 狀態列就消失的問題;
    def event(self, QEvent):
        if QEvent.type() == QEvent.StatusTip:
            if QEvent.tip() == "":
                QEvent = QStatusTipEvent("ready!")  # 此處為要始終顯示的內容
        return super().event(QEvent)

2、控制狀態列顯示和隱藏的問題

   def toggleMenu(self, state):  # 自定義事件函數
        print(state)
        # if state:
        #     self.statusBar().showMessage("ready!")
        # else:
        #     self.statusBar().showMessage("")
        # if state:  # 控制狀態列是否顯示,
        #     self.statusbar().show()  # 此處是錯誤範例
        # else:
        #     self.statusbar().hide()
 
        if state:  # 應該使用statusBar() 而不是 statusbar
            self.statusBar().show()
        else:
            self.statusBar().hide()

最近學習pyqt5教學,也是別人翻譯的,總的也是錯誤多多,應該直接看原版的,充分表明英語很重要啊……

貼上全部程式碼:

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QAction, qApp, QMenu
from PyQt5.QtGui import QIcon, QStatusTipEvent
 
class main_window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()
 
    def initUI(self):
        # 可以設定 動作的圖示, 文字顯示; 強大
        exitAct = QAction(QIcon("/Users/zuozhe/PycharmProjects/Soft-Video/images/m4.png"), "&退出", self)
        exitAct.setShortcut("Ctrl+Q")  # 設定快捷鍵
        exitAct.setToolTip("Exit Application")  # 提示
        exitAct.triggered.connect(qApp.exit)  # 繫結退出事件
 
        status = self.statusBar()  # 建立狀態列
        status.showMessage("ready!")  # 顯示訊息
 
        # 選單欄
        # 檔案選單欄
        menubar = self.menuBar()
        menubar.setNativeMenuBar(False)  # MAC OS 下需要設定此句話
        fileMenu = menubar.addMenu("&File")  # 主選單File
 
        impMenu = QMenu("Import", self)  # 建立選單項
        impAct = QAction("Import Email", self)  # Import選單下有子選單 Import Email
        impMenu.addAction(impAct)
 
        newAct = QAction("New", self)
        # 就差 給 Action(動作)繫結觸發事件了
        fileMenu.addAction(newAct)  # 將兩個選單項加入到 File主選單欄下
        fileMenu.addMenu(impMenu)
        fileMenu.addAction(exitAct)  # 繫結 File下的選單項
        # 編輯選單欄
        editMenu = menubar.addMenu("&Edit")
 
        # 檢視選單欄
        viewMenu = menubar.addMenu("&View")
        # 勾選選單
        viewstatAct = QAction("是否顯示狀態列", self, checkable=True)
        viewstatAct.setToolTip("View statusbar")
        viewstatAct.setChecked(True)
        viewstatAct.triggered.connect(self.toggleMenu)  # 觸發連結事件; toggleMenu是自定義函數
        viewMenu.addAction(viewstatAct)
 
        # 設定視窗的 位置和大小
        self.setGeometry(300, 300, 500, 600)
        self.setWindowTitle("主視窗的選單欄和工具列")
        self.show()
 
    # 此覆蓋父類別函數: 覆蓋方法; 為了克服 將滑鼠放置於選單欄上 狀態列就消失的問題;
    def event(self, QEvent):
        if QEvent.type() == QEvent.StatusTip:
            if QEvent.tip() == "":
                QEvent = QStatusTipEvent("ready!")  # 此處為要始終顯示的內容
        return super().event(QEvent)
 
    def toggleMenu(self, state):  # 自定義事件函數
        print(state)
        # if state:
        #     self.statusBar().showMessage("ready!")
        # else:
        #     self.statusBar().showMessage("")
        # if state:  # 控制狀態列是否顯示,
        #     self.statusbar().show()
        # else:
        #     self.statusbar().hide()
 
        if state:  # 應該使用statusBar() 而不是 statusbar
            self.statusBar().show()
        else:
            self.statusBar().hide()
 
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = main_window()
    sys.exit(app.exec_())

到此這篇關於基於PyQt5實現狀態列(statusBar)顯示和隱藏功能的文章就介紹到這了,更多相關PyQt5狀態列顯示 隱藏內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com