ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【python/PySide6】PySide6の導入と簡単なGUIを作ってみる

 以前のtkinerを使ってpythonGUIを作る記事を書きました。

 基本的にデフォルトで入っていてちょっとしたGUIならすぐに作れて便利ではあるのですが、自由度というか書いていく内に若干の使い難さを感じるようになっていました。

 この他にも何かいいライブラリはないかと思って探していたところ、PySide6というQtを使ったものが良さそうだと感じたので今回はそのインストール方法と簡単なGUIを作ってみた備忘録になります。
 また今回はWindowsでの方法になるので注意してください。


 では、始めます。


1:PySide6のインストール方法
 インストール方法は簡単で以下のpipコマンドでインストールします。

$ pip install pyside6

 ちゃんとPySide6が使えるかの確認は以下のプログラムをhello.pyとして保存し実行することで確認できます。

・hello.py

#-*- coding:utf-8 -*-
import sys
from PySide6.QtWidgets import QApplication, QLabel

app = QApplication(sys.argv)
label = QLabel("Hello World!")
label.show()
app.exec()

 画面サイズが設定されてないせいなのか自分の場合はかなり小さい画面になっていましたが、以下のようにGUIが表示されればインストール完了です。
f:id:rikoubou:20220218105246p:plain


2:PySide6で簡単なGUI
 では実際に簡単なGUIを作ってみます。今回作ったのは参考資料にあるサイト様の内容をいくつか組み合わせています。

gui_sample.py

#-*- coding:utf-8 -*-
import sys
from PySide6.QtWidgets import *

class Form(QDialog):

    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        # Widgetsの設定(タイトル、固定横幅、固定縦幅)
        self.setWindowTitle("Title test")
        self.setFixedWidth(300)
        self.setFixedHeight(100)

        self.edit = QLineEdit("Write here") # テキスト入力
        self.button = QPushButton("Button") # ボタン

        # レイアウトを作成して各要素を配置
        layout = QVBoxLayout()
        layout.addWidget(self.edit)
        layout.addWidget(self.button)

        # レイアウトを画面に設定
        self.setLayout(layout)

        # ボタンを押したときの関数を設定
        self.button.clicked.connect(self.showMessageBox)


    # テキスト入力の内容をメッセージボックスで表示する関数
    def showMessageBox(self):
        QMessageBox.information(self, "Message", self.edit.text())


if __name__ == '__main__':
    # Qtアプリケーションの作成
    app = QApplication(sys.argv)

    # フォームを作成して表示
    form = Form()
    form.show()

    # 画面表示のためのループ
    sys.exit(app.exec())

 上記のプログラムを実行すると、以下のようなGUIが表示されます。
f:id:rikoubou:20220218112436p:plain

 ボタンを押すとテキストに入力された内容がメッセージボックスで表示されます。
f:id:rikoubou:20220218112544p:plain


 以上がPySide6の導入と簡単なGUIを作ってみた内容になります。

 Qt自体あまり触ったことなかったのもあり、まだ何もわかっていない状態ですが印象としてはtkinterよりも自由度は高そうな気がしています。

 tkinterはどうやらMacなどでは非推奨になりつつあるらしいので、多くの環境に合わせたい場合はこのPySide6を使うのもいいかもしれません。


・参考資料