qtDesigner.uiファイルをpython / pyqtにリンクしますか?


81

したがって、QtDesignerにアクセスしてUIを作成すると、.uiファイルとして保存されます。これをPythonファイルとして作成したり、Pythonで使用したりするにはどうすればよいですか?


1
私はまさにそれを達成するためにPySideQUiLoaderを使用しました-投稿[4442286] [1] [1]を参照してください:stackoverflow.com/questions/4442286
Sven

以下の方法は、より実用的である:stackoverflow.com/questions/14892713/...
ILED

回答:


62

コードで.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」を追加します。


2
完了したら、変数にアクセスする方法を追加できますか?プッシュボタンなど?
ジョナサン

3
@JonathanLeaders .uiファイルで定義されているボタンがある場合は、self.pushButtonのように呼び出します。uic.loadUi( 'uifile.ui'、self.ui)などの任意のクラス属性にuiをロードして、ウィジェットやself.ui.pushButtonなどを呼び出すこともできます。
Maxim Popravko 2015

49

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_())

3
これは完全な例であるため、最良の答えとなるはずです。
Francesco Pasa 2016年

29

pyuicツール(site-packages \ pyqt4 \ bin)を使用して、UIファイルからPythonファイルを生成する必要があります。

pyuic form1.ui > form1.py

pyqt4で

pyuic4.bat form1.ui > form1.py

次に、form1をスクリプトにインポートできます。


25

この記事はとても役に立ちました。

http://talk.maemo.org/archive/index.php/t-43663.html

その記事から抜粋して、.uiファイルを作成して.pyファイルに変更するアクションについて簡単に説明します。

  1. スタートメニューからQtDesignerを起動します。
  2. 「新規フォーム」ウィンドウから「メインウィンドウ」を作成します
  3. 左側の「ウィジェットボックスメニュー」の下部にある「ウィジェットの表示」から
    「ラベルウィジェット」を追加します。(ドラッグアンドドロップをクリック)
  4. 新しく追加されたラベルウィジェットをダブルクリックして、名前を「HelloWorld」に変更します
  5. この時点で、Control + Rホットキーを使用して、どのように表示されるかを確認できます。
  6. 必要に応じて、ドラッグアンドドロップでボタンやテキスト、その他のウィジェットを追加します。
  7. フォームを保存します。[ファイル]-> [名前を付けて保存]-> [Hello World.ui](Control + Sでも[名前を付けて
    保存]オプションが表示されます)「HelloWorld」.ui
    ファイルを保存したディレクトリをメモしておきます。 。(便宜上、(C :)に保存しました)

ファイルが作成されて保存されます。次に、pyuicを使用してファイルからPythonコードを生成します。

  1. スタートメニューからコマンドウィンドウを開きます。
  2. ここで、「HelloWorld.ui」を保存したディレクトリに「cd」します。「cd」を実行するだけで、「C:>」プロンプトが表示され、「HelloWorld.ui」が保存されました。
  3. ファイルが保存されているディレクトリに移動したら、次のように入力します。
  4. pyuic4 -x helloworld.ui -o helloworld.py
  5. おめでとう!!これで、Python Qt4GUIアプリケーションができました。
  6. helloworld.pyファイルをダブルクリックして実行します。(私はpyscripterを使用し、ダブルクリック
    するとpyscripterで開き、そこからファイルを「実行」します)

これが誰かを助けることを願っています。


1
pyuic4 helloworld.ui> helloworld.pyを使用してコンパイルしていました。実際には、-x引数と-o引数をpyuic4に渡す必要があります。情報のおかげで!。
muammar 2015年

特に「GUIの生成」コードが実際に生成されたファイルに含まれていることは、私を助けてくれました。
ヴァルモンド

16

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_())

12

私の意見では、よりクリーンな方法は、前述のように最初に.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、デザイナーによって上書きされる可能性のある機能コードを外部に保持します。上記のようにuiMyWindowクラスを介して参照するだけです。


self.ui.okButton.clicked.connect(self.function_name)私に与えます TypeError: event() takes 1 positional argument but 2 were given。どのようにそれを解決しましたか?
Ahsanul Haque 2016

9

以下のコマンドを使用して、.uiファイルを実行可能なpythonファイルに変換できます。

pyuic4 -x form1.ui > form1.py

これで、Pythonファイルを次のようにすぐに実行できます。

python3(whatever version) form1.py

このファイルをインポートして使用できます。


参考までに-xオプションを省略すると、アプリケーションを作成して実行するコードの部分を取得できません。「-x」を省略した回答をいくつか見ました。この答えは最も完全です。
マシンではない

5

このようにUIファイルをコンパイルできます

pyuic4 -x helloworld.ui -o helloworld.py

4

.uiファイルを.pyファイルにコンパイルするために、私は次のことを行いました。

python pyuic.py form1.ui > form1.py

Att。



0

Anaconda3(2018年9月)とQTデザイナー5.9.5を使用します。QTデザイナで、ファイルをuiとして保存します。Anacondaプロンプトを開きます。ファイルを検索します:cd C:....(ファイルのアクセスパスをコピーして貼り付けます)。次に、次のように記述します。pyuic5-x helloworld.ui -o helloworld.py(helloworld =ファイルの名前)。入る。Spyderを起動します。ファイル.pyを開きます。


0

2020年11月)これは私のために働いた(UBUNTU 20.04):

pyuic5 /home/someuser/Documents/untitled.ui > /home/someuser/Documents/untitled.py
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.