PyQt 5のQMainWindow

12496 ワード

PyQt 5のQMainWindow
1つのウィンドウに1つ以上のウィンドウが含まれている場合、このウィンドウは親ウィンドウであり、含まれているウィンドウは子ウィンドウです.親ウィンドウのないウィンドウは最上位ウィンドウであり、QMainWindowは最上位ウィンドウであり、メニューバー、ツールバー、ステータスバー、サブウィンドウなど、多くのインタフェース要素を含むことができます.QMainWindowはQWidgetクラスから継承され、その派生メソッドと属性をすべて保有しています.重要なメソッドは次のとおりです.
方法
説明
addToolBar()
ツールバーの追加
centralWidget()
ウィンドウの中心にあるコントロールを返します.設定されていない場合はNULLを返します.
menuBar()
メインウィンドウのメニューバーに戻る
setCentralWidget()
ウィンドウの中心を設定するコントロール
setStatusBar()
ステータスバーの設定
statusBar()
ステータスバーオブジェクトを取得したら、ステータスバーオブジェクトのshowMessage(message,int timeout=0)メソッドを呼び出し、ステータスバー情報を表示します.ここで、1番目のパラメータは表示するステータスバー情報であり、2番目のパラメータは情報が滞留する時間であり、単位はミリ秒(ms)、デフォルトは0であり、ステータスバー情報がずっと表示されていることを示す.
注意:QMainWindowは、独自のレイアウトがあるため、レイアウトを設定できません(setLayout()メソッドを使用します).
一、メインウィンドウの作成
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow,self).__init__()
        
		self.setWindowTitle("      ")
        self.resize(400,400)
        self.status = self.statusBar()
        self.status.showMessage("     ",5000)
       
if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = MainWindow()
    form.show()
    sys.exit(app.exec_())


コード解析:
  • カスタムウィンドウクラスMainWindowでは、メインウィンドウQMainWindowクラスのすべての属性とメソッドを継承し、親クラスのコンストラクション関数super()を使用してウィンドウを初期化します.
  • setWindowTitle()メソッドでウィンドウタイトルを設定し、resize()メソッドでウィンドウサイズを設定します.
  • QMainWindowクラスのstatusBar()メソッドを使用してステータスバーを作成し、呼び出します.showMessage()メソッドは、ステータスバーにプロンプト情報を表示し、表示時間は5秒、5秒後にステータスバープロンプト情報が消えます.

  • 二、メインウィンドウが中央になる
    QdesktopWidgetクラスを使用して、メインウィンドウの中央表示を実現します.コードは以下の通りです.
    import sys
    from PyQt5.QtWidgets import QMainWindow,QApplication,QDesktopWidget
    
    class MainWindow(QMainWindow):
        def __init__(self):
            super(MainWindow,self).__init__()
    
            self.resize(400,400)
            self.setWindowTitle("      ")
            self.center()
    
        def center(self):
            screen = QDesktopWidget().screenGeometry()
            size = self.geometry()
            self.move(int((screen.width()-size.width())/2),int((screen.height()-size.height())/2))
            
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        form = MainWindow()
        form.show()
        sys.exit(app.exec_())
    
    

    コード解析:
  • QDesktopWidget().screenGeometry()は表示画面のサイズを計算するために使用され、QdesktopWidgetは表示画面を記述するクラスであり、screenGeometry()によって画面のサイズを得る.
  • self.geometry()は、メインウィンドウを取得するためのサイズです.
  • self.move()はメインウィンドウを移動するために使用され、中のパラメータは画面の中心の位置座標であり、DeprecationWarning: an integer is required (got type float)の警告があれば、中のパラメータを整列すればよい.

  • 三、メインウィンドウを閉じる
    import sys
    from PyQt5.QtWidgets import QMainWindow,QApplication,QDesktopWidget,QPushButton
    
    class MainWindow(QMainWindow):
        def __init__(self):
            super(MainWindow,self).__init__()
    
            self.resize(400,400)
            self.setWindowTitle("      ")
            button = QPushButton("     ",self)
            button.move(100,200)
            button.clicked.connect(self.close)
    
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        form = MainWindow()
        form.show()
        sys.exit(app.exec_())
    
    

    コード解析:
  • QPShButton(str,QWidget)ボタンオブジェクトを作成してメインウィンドウに追加します.
  • button.clicked.connect(self.close)接続スロット関数は、ボタンがクリックされたときにclose()関数を呼び出し、メインウィンドウを閉じます.