PyQt5 Qt Desigerを使ってみる

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アプリが作れちゃいますのでおすすめです。

# -*- coding: utf-8 -*-
import datetime
import sys
from PyQt5 import QtWidgets
from mainwindow import Ui_MainWindow

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, app):
        super().__init__()
        
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        
        self.ui.pushButton.clicked.connect(self.addTime)
        
    def addTime(self):
        text = self.ui.textBrowser.toPlainText()
        text = str(datetime.datetime.now()) + '\n' + text
        self.ui.textBrowser.setText(text)
        
def main():
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow(app)
    window.show()
    app.exec_()

if __name__ == '__main__':
    main()

コメント

タイトルとURLをコピーしました