ui2pyclass.py PySideの.uiをクラス化して継承する
PySideの.uiファイルを使用するときにQUiLoaderを使わず、.uiをPythonに変換せずpythonのクラスとして継承して使用したいと思ったことはないでしょうか?
そんな時はloadUiTypeを使えばいいのですが一部のMayaだとloadUiTypeのimportErrorが・・・
self.hogeui.hogewidget.clicked.connect(hoge)のように長ったらしくなる
そんな時に便利なものを作りました!! その名もui2pyclass!!!
名前のそのまんまでuiからpython classにするいう感じで使用できます
※ui2pyclassはelementtree-xpathを使用しているのでpip install lxml
などでxmlを使用できるようにする必要がありますのでご注意ください
使い方は至ってシンプルでuiのpathとuiのメインオブジェクトのオブジェクト名を指定して
継承したいclassにui2pyclass.baseClassとui2pyclass.formClassを指定し、継承先の__init__
でself.setupUi(self)を実行すれば使用できます
import os
from PySide2.QtWidgets import *
from ui2pyclass import *
absPath = os.path.dirname(__file__)
uiPath = os.path.join(absPath, view.ui)
ui = ui2pyclass(ui=uiPath, objectName=ui2pyclass)
class uiWidget(ui.baseClass, ui.formClass):
def __init__(self, parent=None, *args, **kwargs):
super(uiWidget, self).__init__(parent, *args, **kwargs)
self.setupUi(self)
def main():
app = QApplication.instance()
ex = uiWidget()
ex.show()
sys.exit()
app.exec_()
main()
uiのメインオブジェクトのオブジェクト名はObject Inspectorで確認できます
特に設定していない場合がFormになっていると思いますが設定している場合は変更してください
参考
https://doc-snapshots.qt.io/qtforpython-5.15/PySide2/QtUiTools/ls.loadUiType.html
ディスカッション
コメント一覧
まだ、コメントがありません