Wenn ich also in QtDesigner gehe und eine Benutzeroberfläche erstelle, wird diese als .ui-Datei gespeichert. Wie kann ich dies als Python-Datei erstellen oder in Python verwenden?
Wenn ich also in QtDesigner gehe und eine Benutzeroberfläche erstelle, wird diese als .ui-Datei gespeichert. Wie kann ich dies als Python-Datei erstellen oder in Python verwenden?
Antworten:
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 Qt-Ressourcendateien (äußerst nützlich) für Symbole usw. auch kompilieren müssen, wenn Sie sie verwenden:
pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc
Beachten Sie, dass beim uicKompilieren der Schnittstelle am Ende der PY-Datei 'import images_rc' hinzugefügt wird. Sie müssen also Ressourcen in die Datei mit diesem Namen kompilieren oder sie im generierten Code umbenennen.
Die Kombination von Max Antwort und Shriramana Sharma Mailingliste senden , ich baute ein kleines funktionierendes Beispiel zum Laden einer mywindow.uiDatei mit einem QMainWindow(so wählen , nur ein Hauptfenster in Qt Designer erstellen zu können File-NewDialog).
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 __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = MyWindow()
sys.exit(app.exec_())
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 aus diesem Artikel beschreiben.
Die Datei wird erstellt und gespeichert, jetzt generieren wir den Python-Code daraus mit pyuic!
Hoffe das hilft jemandem.
Sie können uicPyQt5 auch 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 __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui()
sys.exit(app.exec_())
Meiner Meinung nach ist es sauberer, zuerst wie oben beschrieben nach .py zu exportieren:
pyuic4 foo.ui > foo.py
Und verwenden Sie es dann 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 __name__ == "__main__":
main()
Auf diese Weise können andere Personen, die qt-designer nicht verwenden, den Code lesen, und Ihr Funktionscode bleibt außerhalb des Codes, der foo.pyvom Designer überschrieben werden könnte. Sie verweisen einfach uidurch die MyWindowKlasse wie oben gezeigt.
self.ui.okButton.clicked.connect(self.function_name)gibt mir TypeError: event() takes 1 positional argument but 2 were given. Wie haben Sie es gelöst?
Mit dem folgenden Befehl können Sie Ihre .ui-Dateien in eine ausführbare Python-Datei konvertieren.
pyuic4 -x form1.ui > form1.py
Jetzt können Sie die Python-Datei sofort als ausführen
python3(whatever version) form1.py
Sie können diese Datei importieren und verwenden.
in pyqt5 zum Konvertieren von einer UI-Datei in eine .py-Datei
pyuic5.exe youruifile.ui -o outputpyfile.py -x
Verwenden von Anaconda3 (September 2018) und QT Designer 5.9.5. Speichern Sie Ihre Datei im QT-Designer als Benutzeroberfläche. Öffnen Sie die Anaconda-Eingabeaufforderung. Suchen Sie nach Ihrer Datei: cd C: .... (Kopieren Sie den Zugriffspfad Ihrer Datei und fügen Sie ihn ein). Dann schreiben Sie: pyuic5 -x helloworld.ui -o helloworld.py (helloworld = Name Ihrer Datei). Eingeben. Starten Sie Spyder. Öffnen Sie Ihre Datei .py.