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 uic
Kompilieren 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.ui
Datei mit einem QMainWindow
(so wählen , nur ein Hauptfenster in Qt Designer erstellen zu können File-New
Dialog).
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 uic
PyQt5 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.py
vom Designer überschrieben werden könnte. Sie verweisen einfach ui
durch die MyWindow
Klasse 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.