Gibt es eine Möglichkeit, ein mit qtDesigner gebildetes Ui in eine Python-Version zu konvertieren, ohne eine zusätzliche Datei zu verwenden?
Ich verwende Maya für diese Benutzeroberfläche, und das Konvertieren dieser Benutzeroberfläche in eine lesbare Python-Version zum Implementieren wäre wirklich großartig!
Sie können den Befehl pyuic4
für Shell verwenden: pyuic4 input.ui -o output.py
Wenn Sie Windows verwenden, befindet sich der PyQt4-Ordner standardmäßig nicht im Pfad. Sie müssen dazu vorgehen, bevor Sie ihn ausführen.
c:\Python27\Lib\site-packages\PyQt4\something> pyuic4.exe full/path/to/input.ui -o full/path/to/output.py
oder nennen Sie es mit seinem vollständigen Pfad
full/path/to/my/files> c:\Python27\Lib\site-packages\PyQt4\something\pyuic4.exe input.ui -o output.py
Der schnellste Weg zum Konvertieren von .ui in .py ist vom Terminal:
pyuic4 -x input.ui -o output.py
Stellen Sie sicher, dass Sie pyqt4-dev-tools installiert haben.
Für pyqt5 können Sie verwenden
pyuic5 xyz.ui > xyz.py
oder
pyuic5 xyz.ui -o xyz.py
Ich bin nicht sicher, ob PyQt ein solches Skript hat, aber nachdem Sie PySide installiert haben, befindet sich im Skript-Verzeichnis "uic.py" ein Skript. Sie können dieses Skript verwenden, um eine .ui-Datei in eine .py-Datei zu konvertieren:
python uic.py input.ui -o output.py -x
Die Frage wurde bereits beantwortet, aber wenn Sie während der Entwicklung nach einer Verknüpfung suchen, sparen Sie etwas Zeit, wenn Sie diese oben in Ihrem Python-Skript verwenden, aber meistens vergessen, dass Sie die Konvertierung tatsächlich durchführen müssen.
import os #Used in Testing Script
os.system("pyuic4 -o outputFile.py inpuiFile.ui")
Sie müssen PyQt4 nicht mit all seinen Nebenfunktionen installieren, Sie benötigen lediglich das PyQt4-Paket. Innerhalb des Pakets können Sie das Modul pyuic.py ("C:\Python27\Lib\site-packages\PyQt4\uic") verwenden, um Ihre Ui-Datei zu konvertieren.
C:\test> python C:\Python27x64\Lib\site-packages\PyQt4\uic\pyuic.py -help
Sie erhalten alle Optionen aufgelistet:
Usage: pyuic4 [options] <ui-file>
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-p, --preview show a preview of the UI instead of generating code
-o FILE, --output=FILE
write generated code to FILE instead of stdout
-x, --execute generate extra code to test and display the class
-d, --debug show debug output
-i N, --indent=N set indent width to N spaces, tab if N is 0 [default:
4]
-w, --pyqt3-wrapper generate a PyQt v3 style wrapper
Code generation options:
--from-imports generate imports relative to '.'
--resource-suffix=SUFFIX
append SUFFIX to the basename of resource files
[default: _rc]
Ihr Befehl wird also so aussehen:
C:\test>python C:\Python27x64\Lib\site-packages\PyQt4\uic\pyuic.py test_dialog.ui -o test.py -x
Sie können auch vollständige Dateipfade zu Ihrer Datei verwenden, um sie zu konvertieren.
Warum willst du es trotzdem konvertieren? Ich ziehe es vor, Widgets im Designer zu erstellen und sie mit der * .ui-Datei zu implementieren. Das macht es viel komfortabler, es später zu bearbeiten. Sie können auch Ihre eigenen Widget-Plugins schreiben und sie mit vollem Zugriff in den Qt Designer laden. Das Festcodieren Ihrer UI macht es nicht sehr flexibel.
Ich verwende viele meiner UIs nicht nur in Maya, sondern auch für Max, Nuke usw. Wenn Sie etwas Software-spezifisches ändern müssen, sollten Sie versuchen, die Klasse (mit der übergeordneten UI-Datei) von einem globaleren Punkt aus zu erben Anzeigen und Patchen oder Überschreiben der Methoden, die Sie anpassen müssen. Das spart viel Arbeitszeit. Lassen Sie mich wissen, wenn Sie weitere Fragen dazu haben.
Update für alle, die PyQt5 mit Python 3.x verwenden:
.ui
-Datei."C:\python\Lib\site-packages\PyQt5\pyuic5.bat" -x Trial.ui -o trial_gui.py
Für Fälle ein, in denen PyQt5 keine Pfadvariable ist. Der Pfad in Anführungszeichen "" gibt an, wo sich die pyuic5.bat
-Datei befindet.Das sollte funktionieren!
Für Ubuntu funktioniert es mit den folgenden Befehlen: Wenn einzelne Dateien Hauptmethoden enthalten sollen, um die Dateien einzeln auszuführen, kann dies zu Testzwecken sein.
pyuic5 filename.ui -o filename.py -x
Keine Hauptmethode in der Datei, kann nicht einzeln ausgeführt werden
pyuic5 filename.ui -o filename.py
Bedenken Sie, ich verwende PyQT5.
Ich bin in letzter Zeit auf das gleiche Problem gestoßen. Nachdem ich den richtigen Pfad zur pyuic4-Datei mit dem Finder gefunden habe, den ich ausgeführt habe:
C:\Benutzer\ricckli.qgis2\python\plugins\qgis2leaf> C:\OSGeo4W64\bin\pyuic4 -o ui_q gis2leaf.py ui_qgis2leaf.ui
Wie Sie sehen, wurde meine UI-Datei in diesem Ordner abgelegt ...
QT Creator wurde separat installiert und die pyuic4-Datei wurde mit dem OSGEO4W-Installationsprogramm dort abgelegt