PyQt5 Qt Desigerを使ってみる

Share on:

PyQt5でアプリを作ろうと思い、まずは簡単なボタンとテキストブラウザを使ったアプリを作りました。作ったアプリはボタンをクリックすると時刻を表示するというアプリです。

Qt Designerを起動してMain Windowを選択して作成をクリック

これでウィンドウが作成されます

ウィンドウにウィジェットをドラッグ&ドロップ

ウィンドウサイズに合わせてウィジェットのサイズが変わるようにするために、オブジェクトインスペクタのMainWindowを選択して垂直に並べるアイコンをクリック

これでウィンドウサイズに合わせてウィジェットのサイズが変わるようになります

ボタンに表示されるテキストを変更するために、ボタンをダブルクリックしてテキストを変更します

mainwindow.uiとして保存

Anacondaのコマンドプロンプトでmainwindow.uiを保存したフォルダに移動してから下記コマンドを実行して.uiを.pyに変換

pyuic5.bat -o mainwindow.py mainwindow.ui

これでmainwindow.pyに保存されます

メインのコードは下記の通りで、ボタンの設定とテキストブラウザの文字列取得と設定が主な内容です。 ボタンの設定は、クリックしたときにaddTimeが呼ばれるようにするためにpushButton.clicked.connectで設定します。 テキストブラウザの設定は、文字列取得をtextBrowser.toPlainTextで行い、textBrowser.setTextで文字列をセットします。

こんな感じで、PyQtを使うと簡単にGUIアプリが作れちゃいますのでおすすめです。

Pythonコード

 1# -*- coding: utf-8 -*-
 2import datetime
 3import sys
 4from PyQt5 import QtWidgets
 5from mainwindow import Ui_MainWindow
 6
 7class MainWindow(QtWidgets.QMainWindow):
 8    def __init__(self, app):
 9        super().__init__()
10        
11        self.ui = Ui_MainWindow()
12        self.ui.setupUi(self)
13        
14        self.ui.pushButton.clicked.connect(self.addTime)
15        
16    def addTime(self):
17        text = self.ui.textBrowser.toPlainText()
18        text = str(datetime.datetime.now()) + '\n' + text
19        self.ui.textBrowser.setText(text)
20        
21def main():
22    app = QtWidgets.QApplication(sys.argv)
23    window = MainWindow(app)
24    window.show()
25    app.exec_()
26
27if __name__ == '__main__':
28    main()

関連記事