it-swarm.com.de

QtDesigner .ui-Datei mit Python/pyqt verknüpfen?

Wenn ich also in QtDesigner gehe und eine Benutzeroberfläche baue, wird diese als .ui-Datei gespeichert. Wie kann ich dies als Python-Datei erstellen oder in Python verwenden?

70
Chris

Eine andere Möglichkeit, .ui in Ihrem Code zu verwenden, ist:

from PyQt4 import QtCore, QtGui, uic
class MyWidget(QtGui.QWidget)
    ...
    #somewhere in constructor:
    uic.loadUi('MyWidget.ui', self)

beide Ansätze sind gut. Vergessen Sie nicht, dass Sie, wenn Sie Qt-Ressourcendateien (extrem nützlich) für Symbole usw. verwenden, diese auch kompilieren müssen:

pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc

Beachten Sie: Wenn uic die Schnittstelle kompiliert, fügt sie 'import images_rc' am Ende der .py-Datei hinzu. Sie müssen also Ressourcen mit diesem Namen in die Datei kompilieren oder in generierten Code umbenennen.

54
Maxim Popravko

Ich kombinierte Max's Antwort und Shriramana Sharmas Mailingliste post und baute ein kleines Arbeitsbeispiel für das Laden einer mywindow.ui-Datei mit einer QMainWindow (Sie müssen also nur ein Hauptfenster im Qt Designer-Dialogfeld File-New erstellen).

Dies ist der Code, der es lädt:

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 __== '__main__':
    app = QtGui.QApplication(sys.argv)
    window = MyWindow()
    sys.exit(app.exec_())
38
metakermit

Sie müssen eine Python-Datei aus Ihrer UI-Datei mit dem pyuic-Tool generieren (site-packages\pyqt4\bin)

pyuic form1.ui > form1.py

mit pyqt4

pyuic4.bat form1.ui > form1.py

Dann können Sie das form1 in Ihr Skript importieren.

28
luc

Ich fand diesen Artikel sehr hilfreich. 

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

Ich werde kurz die Aktionen zum Erstellen und Ändern der .ui-Datei in die .py-Datei beschreiben, die diesem Artikel entnommen wurde.

  1. Starten Sie Qt Designer über Ihr Startmenü.
  2. Erstellen Sie im Fenster "Neues Formular" das "Hauptfenster".
  3. Von "Widgets anzeigen" zum unteren Rand Ihres "Widget Box-Menüs" auf der linken Seite
    fügen Sie ein "Label Widget" hinzu. (Klicken Sie auf Drag and Drop)
  4. Doppelklicken Sie auf das neu hinzugefügte Label-Widget, um seinen Namen in "Hello World" zu ändern.
  5. an dieser Stelle können Sie die Tastenkombination Strg + R verwenden, um zu sehen, wie es aussehen wird.
  6. Fügen Sie Schaltflächen oder Text oder andere Widgets durch Ziehen und Ablegen hinzu, wenn Sie möchten.
  7. Speichern Sie nun Ihr Formular. Datei-> Speichern unter-> "Hello World.ui" (Control + S wird ebenfalls angezeigt
    die Option "Speichern unter") Notieren Sie sich das Verzeichnis, in dem Sie Ihre "Hello World" .ui gespeichert haben
    Datei. (Ich habe meine in (C :) für die Bequemlichkeit gespeichert)

Die Datei wird erstellt und gespeichert. Jetzt generieren wir den Python-Code mithilfe von pyuic!

  1. Öffnen Sie in Ihrem Startmenü ein Befehlsfenster.
  2. Nun "cd" in das Verzeichnis, in dem Sie Ihr "Hello World.ui" gespeichert haben. Für mich musste ich nur "Cd \" und war an meiner "C:>" - Eingabeaufforderung, wo mein "Hello World.ui" war gespeichert in.
  3. Wenn Sie zu dem Verzeichnis gelangen, in dem Ihre Datei gespeichert ist, geben Sie Folgendes ein.
  4. pyuic4 -x helloworld.ui -o helloworld.py
  5. Herzliche Glückwünsche!! Sie haben jetzt eine Python-Qt4-GUI-Anwendung !! 
  6. Doppelklicken Sie auf Ihre helloworld.py-Datei, um sie auszuführen. (Ich benutze Pyscripter und bei Doppelklick
    es öffnet sich in pyscripter, dann "laufe" ich die Datei von dort aus)

Hoffe das hilft jemandem.

24
xopenex

Sie können auch uic in PyQt5 mit dem folgenden Code verwenden.

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 __== '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = Ui()
    sys.exit(app.exec_())
12
Akshay

Sie können Ihre .ui-Dateien mit dem folgenden Befehl in eine ausführbare Python-Datei konvertieren.

pyuic4 -x form1.ui > form1.py

Nun können Sie die Python-Datei sofort als ausführen

python3(whatever version) form1.py

Sie können diese Datei importieren und verwenden.

7
Jeba

Der sauberere Weg ist meiner Meinung nach, zuerst in .py wie oben beschrieben zu exportieren: 

pyuic4 foo.ui > foo.py

Und dann verwenden Sie es in Ihrem Code (z. B. main.py) wie:

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 __== "__main__":
    main()

Auf diese Weise haben andere Benutzer die Möglichkeit, den Code nicht mit qt-designer zu lesen, und der Funktionscode bleibt außerhalb von foo.py, der vom Designer überschrieben werden könnte. Sie verweisen nur auf ui durch die MyWindow-Klasse, wie oben gezeigt.

7
chefarov

sie können die UI-Dateien so kompilieren

pyuic4 -x helloworld.ui -o helloworld.py
5
reviloera

Um .ui-Dateien in .py-Dateien zu kompilieren, habe ich Folgendes getan:

python pyuic.py form1.ui > form1.py

Att.

4
filipemr

in pyqt5, um eine UI-Datei in eine .py-Datei zu konvertieren

pyuic5.exe youruifile.ui -o outputpyfile.py -x

1
Aju George

Verwenden Sie Anaconda3 (September 2018) und QT Designer 5.9.5 . Speichern Sie Ihre Datei in QT Designer als ui . Öffnen Sie Anaconda Prompt. Suchen Sie nach Ihrer Datei: cd C: .... (Kopieren/Einfügen des Zugriffspfads Ihrer Datei) ..__ Schreiben Sie dann: pyuic5 -x helloworld.ui -o helloworld.py (helloworld = Name Ihrer Datei). Geben Sie ..__ ein. Starten Sie Spyder. Öffnen Sie Ihre Datei .py.

0
Pifpy