PyQtのUIについて
asammdfguiのUI改変中に知った、今更ながらの話題を提供させていただきたいと思います。
私は、今までPyQtのUIをQtDesignerを利用して”*.ui”ファイルを作成後、”pyuic”を使用して”*.py”へ変換し、
pythonのコードから使用しておりました。
…が、なんと!?”py”へ変換することなく”ui”のままでも、pythonからUIとやりとりができるのです。
まずは、サンプルとして下記の様な、ラベル(label)、lineEdit(lineEdit)、pushButton(pushButton)からなる、
Dialog(Test.ui)を作成します。
なお、Test.uiは下の、pythonコードのあるフォルダーに”¥ui_file”というフォルダーを作成し、
Test.uiとして保存します。
これに対応するpythonのコードは下記の通りとなります
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
from PyQt5 import QtWidgets, uic from functools import partial import sys import os def update_text(): text = dlg1.lineEdit.text() dlg1.label.setText(text) dlg1.lineEdit.setFocus() def resource_path(relative): if hasattr(sys, "_MEIPASS"): return os.path.join(sys._MEIPASS, relative) return os.path.join(relative) app = QtWidgets.QApplication([]) ui_path = resource_path("ui_file") dlg1 = uic.loadUi(f"{ui_path}/Test.ui") dlg1.pushButton.clicked.connect(update_text) if __name__== "__main__": dlg1.show() app.exec() |
以上のコードを実行すると、ダイアログが現れるので、lineEditに入力を行い、”実行ボタン”を押すと、
ラベルにleneEditに入力された文字が表示されます。
次項で、呼び出し元からの変数の引き渡し、GUIからの戻り値の取得など、順に解説を進めていきたいと思います。
それにしても、asammdfもそうですが、PyQtの初心者向けの情報って、なかなか見つけることができないのは、
私の情報検索能力が低いからなのでしょうか?
最近のコメント