したがって、QtDesignerにアクセスしてUIを作成すると、.uiファイルとして保存されます。これをPythonファイルとして作成したり、Pythonで使用したりするにはどうすればよいですか?
したがって、QtDesignerにアクセスしてUIを作成すると、.uiファイルとして保存されます。これをPythonファイルとして作成したり、Pythonで使用したりするにはどうすればよいですか?
回答:
コードで.uiを使用する別の方法は次のとおりです。
from PyQt4 import QtCore, QtGui, uic
class MyWidget(QtGui.QWidget)
...
#somewhere in constructor:
uic.loadUi('MyWidget.ui', self)
どちらのアプローチも良いです。アイコンなどにQtリソースファイル(非常に便利)を使用する場合は、それもコンパイルする必要があることを忘れないでください。
pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc
注、時にuic
コンパイルインターフェースあなたがこの名前のファイルにリソースをコンパイル、または生成されたコードでその名前を変更しなければならないので、それは、の.pyファイルの末尾に「輸入images_rc」を追加します。
Maxの回答とShriramanaSharmaのメーリングリストの投稿を組み合わせて、をmywindow.ui
含むファイルをロードするための小さな実用的な例QMainWindow
を作成しました(したがって、Qt DesignerのFile-New
ダイアログでメインウィンドウを作成することを選択します)。
これはそれをロードするコードです:
import sys
from PyQt4 import QtGui, uic
class MyWindow(QtGui.QMainWindow):
def __init__(self):
super(MyWindow, self).__init__()
uic.loadUi('mywindow.ui', self)
self.show()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = MyWindow()
sys.exit(app.exec_())
この記事はとても役に立ちました。
http://talk.maemo.org/archive/index.php/t-43663.html
その記事から抜粋して、.uiファイルを作成して.pyファイルに変更するアクションについて簡単に説明します。
ファイルが作成されて保存されます。次に、pyuicを使用してファイルからPythonコードを生成します。
これが誰かを助けることを願っています。
uic
次のコードを使用してPyQt5で使用することもできます。
from PyQt5 import uic, QtWidgets
import sys
class Ui(QtWidgets.QDialog):
def __init__(self):
super(Ui, self).__init__()
uic.loadUi('SomeUi.ui', self)
self.show()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui()
sys.exit(app.exec_())
私の意見では、よりクリーンな方法は、前述のように最初に.pyにエクスポートすることです。
pyuic4 foo.ui > foo.py
そして、次のようにコード内で使用します(例main.py
)。
from foo import Ui_MyWindow
class MyWindow(QtGui.QDialog):
def __init__(self):
super(MyWindow, self).__init__()
self.ui = Ui_MyWindow()
self.ui.setupUi(self)
# go on setting up your handlers like:
# self.ui.okButton.clicked.connect(function_name)
# etc...
def main():
app = QtGui.QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
このようにして、qt-designerを使用せずにコードを読み取る他のユーザーに機能を提供しfoo.py
、デザイナーによって上書きされる可能性のある機能コードを外部に保持します。上記のようにui
、MyWindow
クラスを介して参照するだけです。
self.ui.okButton.clicked.connect(self.function_name)
私に与えます TypeError: event() takes 1 positional argument but 2 were given
。どのようにそれを解決しましたか?
(2020年11月)これは私のために働いた(UBUNTU 20.04):
pyuic5 /home/someuser/Documents/untitled.ui > /home/someuser/Documents/untitled.py