PyQt 5はステータスバーの表示と非表示機能を実現

3820 ワード

まず、解決する2つの問題と問題を解決するコードについて説明します.
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()

最近pyqt 5教程を勉强して、他の人が翻訳したので、総じて间违いが多くて、直接原版を见るべきで、十分に英语が重要であることを表明します......
すべてのコードを貼り付けます.
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_())