PyQtのメインウィンドウからサブウィンドウを作成する方法

PyQtでは、QMainWindowクラスをメインウィンドウに使用し、QWidgetクラスをサブウィンドウに使用できます。

以下、メインウィンドウとサブウィンドウを作成するサンプルコードを示します。

from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton

class ChildWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Child Window')
        self.setGeometry(100, 100, 300, 200)

        layout = QVBoxLayout()
        button = QPushButton('Close')
        button.clicked.connect(self.close)
        layout.addWidget(button)

        self.setLayout(layout)

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Main Window')
        self.setGeometry(100, 100, 500, 400)

        self.child_window = ChildWindow()
        self.setCentralWidget(self.child_window)

if __name__ == '__main__':
    app = QApplication([])
    main_window = MainWindow()
    main_window.show()
    app.exec()

上記コードでは、子ウィンドウとしてQWidgetクラスを継承したChildWindowクラスを作成しています。ChildWindowのコンストラクタでは、子ウィンドウのタイトル、サイズ、レイアウトを設定し、ボタンを追加しています。ボタンのclickedシグナルとself.closeスロット関数の接続も行っています。

メインウィンドウとしてMainWindowクラスをQMainWindowクラスから継承して作成しました。MainWindowのコンストラクタでは、メインウィンドウのタイトルやサイズを指定し、中央ウィンドウとしてChildWindowオブジェクトを作成してself.setCentralWidgetメソッドで中央ウィンドウとして設定しています。

最後に、QApplicationオブジェクトを作成し、MainWindowオブジェクトをインスタンス化して、showメソッドによりメインウィンドウを表示し、最後に、app.execメソッドで主イベントループに遷移します。

bannerAds