👋

PyQt6 #01 Tutorial

2022/12/13に公開約2,200字

はじめに

大学の研究でPyQtを使うことになったので,ここに備忘録として残します.
ソースコードをGitHubに上げているので,参考にしたい方はぜひ.
https://github.com/arMaNi843739/pyqt

導入

PyQt6インストールコマンド

pip install PyQt6

執筆当時,最新バージョンPyQt 6.4.0
参考

Step1: 画面表示

空のウィンドウを表示させる

import sys
from PyQt6 import QtCore, QtWidgets

# ウィンドウに関する定義クラス
class MainWindow(QtWidgets.QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()

        # ウィンドウを表示する位置(x,y)と大きさ(w,h)を指定
        # setGeometory(x, y, w, h)
        self.setGeometry(300, 50, 400, 350)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    main_window = MainWindow()
    main_window.show()
    sys.exit(app.exec())


こんな感じ

Step2: テキストの表示

ウィンドウ内にテキストを表示する
テキストのアライメントとかも指定できるらしい

class MainWindow(QtWidgets.QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()

        # ウィンドウを表示する位置(x,y)と大きさ(w,h)を指定
        # setGeometory(x, y, w, h)
        self.setGeometry(300, 50, 400, 350)

+        # Hello World!と書かれたラベルを追加
+        self.label = QtWidgets.QLabel('Hello World!', self)
+        # ラベルを表示する位置と大きさを指定
+        self.label.setGeometry(50, 50, 100, 10)


こんな感じ

Step3: ボタン

クリックすると'Button Clicked!'と出力するボタンを作る

class MainWindow(QtWidgets.QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()

        # ウィンドウを表示する位置(x,y)と大きさ(w,h)を指定
        # setGeometory(x, y, w, h)
        self.setGeometry(300, 50, 400, 350)

        # Hello World!と書かれたラベルを追加
        self.label = QtWidgets.QLabel('Hello World!', self)
        # ラベルを表示する位置と大きさを指定
        self.label.setGeometry(50, 50, 100, 10)

+        # Buttonと書かれたボタンを追加
+        button = QtWidgets.QPushButton('Button', self)
+        button.setGeometry(170, 155, 60, 40)
+        # ボタンがクリックされたときにself.buttonClicked関数を発火
+        button.clicked.connect(self.buttonClicked)
+
+    def buttonClicked(self):
+        print('Button Clicked!')


こんな感じ

button.clickedの他にも,button.pressedbutton.releasedなどの指定もできる

参考

公式ドキュメント
https://doc.qt.io/qtforpython/

Discussion

ログインするとコメントできます