見出し画像

PythonでOtお試し(GUI作成)

PythonでGUI(グラフィカルユーザーインターフェース)を作るとしたらよく聞くのは「Tkinter」というライブラリですが、これ以外にQt(キュート)を使うことも出来るようです。Qt自体は様々な言語から利用されるフレームワークなのですが、Pythonで利用するには「PyQt5」「PySide2」の2つのライブラリが候補に挙がります。この2つのパッケージはライセンス面などで違いがありますが、ここでは省略。とりあえず今回はPySide2を使います。

まずはAnacondaに新規にQt用の環境を作成。

▲Qt用の環境を作成します。

ターミナルを開きPySide2をインストールします。

$conda install -c conda-forge pyside2

これでライブラリのインストールは完了しました。

QtにはGUIを作成するツール(Qtデザイナー)があります。Anacondaには付属しているので、デザイナーの場所を確認します。
Windows のAnaconda環境だと
「C:\Users\ユーザー名\Anaconda3\Library\bin」
にあるらしいので探しに行きます。
「designer.exe」を発見。ショートカットを作っておきます。

▲ダブルクリックで起動します。

起動すると以下のような画面が開きます。

真ん中のウィンドウはこんな感じ。

▲いろいろとテンプレートがあるみたい。

「MainWindow」を選択します。

色々出てきました。

▲左側にGUIの部品が並んでいます。

とりあえず「Label」を設置して文字を出してみます。左のウィジェットリストからメインウィンドウにドラックアンドドロップ。

▲メインウィンドウに文字が表示されました。

文字が小さいので右のプロパティエディタをいじって大きくします。
ここでコントロールのプロパティを変更するっぽい。fontでサイズを大きく、太字にします。さらにpaletteで色を変更してみます。

▲文字サイズと色が変わりました。

出来たUIを名前を付けて保存します。これで.uiファイルができます。

この.uiファイルをpythonで使えるように.pyファイルに変換します。
Anacondaの環境を立ち上げてコマンドラインから以下の形式で変換できます。

>pyside2-uic -o 吐き出すファイル名.py デザイナーで作った.ui

実際に叩いたコマンドは以下の通り。

>pyside2-uic -o test_ui.py test.ui

これでtest.uiがtest_ui.pyに変換されました。

さて.pyファイルができました。中身を見るといろいろとクラスが定義されているのが分かります。
「class Ui_MainWindow」が定義されているのが確認できました。

pythonのコードの中で取り込んでUIを表示させてみます。

# -*- coding: utf-8 -*-
import sys
from test_ui import Ui_MainWindow
from PySide2.QtWidgets import *

class MainWindow(QMainWindow):    
    def __init__(self, parent = None):
        #初期化処理_インポートしたクラスからuiのインスタンスを作る(?)
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

#実行処理
if __name__=="__main__":
    #アプリケーション初期化
    app = QApplication(sys.argv)
    #オブジェクト生成
    window = MainWindow()
    #表示
    window.show()
    sys.exit(app.exec_())

▲コードはネットで調べたものの真似なのでちゃんとは理解していないです…。同じ階層のtest_ui.pyファイルからメインウィンドウのクラスをインポートして、初期化を掛けるみたいな処理でしょうかね。きちんとしたアプリを作るにはまだまだ勉強が必要です。

実行すると…。

▲GUIアプリが表示されました。

なんとか画面表示まではたどり着くことができました。
Qtデザイナーはウィジェットの配置とかを視覚的に行えるので便利そうです。今後も触るかは未定ですが、もうちょっと勉強したい意欲もあるので、またいじってnoteに書こうかと思います。

ここまで読んでいただきありがとうございました。

いいなと思ったら応援しよう!

こいでみず
ここまで読んでいただきありがとうございます!