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?
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.
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_())
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.
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.
Die Datei wird erstellt und gespeichert. Jetzt generieren wir den Python-Code mithilfe von pyuic!
Hoffe das hilft jemandem.
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_())
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.
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.
sie können die UI-Dateien so kompilieren
pyuic4 -x helloworld.ui -o helloworld.py
Um .ui-Dateien in .py-Dateien zu kompilieren, habe ich Folgendes getan:
python pyuic.py form1.ui > form1.py
Att.
in pyqt5, um eine UI-Datei in eine .py-Datei zu konvertieren
pyuic5.exe youruifile.ui -o outputpyfile.py -x
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.