PyQt5 Qt Desigerを使ってみる
2020/01/24 categories:PyQt5| tags:Python|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アプリが作れちゃいますのでおすすめです。
Pythonコード
## -*- 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()