Hallo leutz,
führe pyuic unter linux so aus:
pyuic test.ui -o test.py
gibt mir auch eine meldung aus: file generated with too recent version of
qt designer
Schau mir dann die test.py an die aber leer ist!!
Was läuft hier wohl falsch
Vielleicht habt ihr ja eine IDEE
PYUIC
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Kannst du ja immer noch. Du solltest nur eben keinen Python-Code aus den UI-Dateien generieren sondern sie direkt einbinden. Dazu gibt es hier aber auch schon viele Threads.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Aller guten Dinge sind drei ... benutze PyQt4.uic und generiere den Code dynamisch:
http://www.riverbankcomputing.co.uk/sta ... uic-module
http://www.riverbankcomputing.co.uk/sta ... uic-module
Code: Alles auswählen
class Widget(QWidget):
snip..
uic.loadUi("file.ui", self)
snap..
Hallo stockie,stockie hat geschrieben: führe pyuic unter linux so aus:
pyuic test.ui -o test.py
da ist einiges verdreht.
Gib es so ein:
oder bei mir:pyuic -o test.py test.ui
Also immer "pyuic -o ziel.py quelle.ui"pyuic4 -o test.py test.ui
dann funktioniert es.
hive
Hi hab es probiert aber nix garnix Datei wird schön erstellt aber leer.
Ich hab es über Windows auch mit pyuic probiert und siehe da
einwandfrei schön mit codegerüst.
Also ich weiss nicht woran es noch liegen könnte vielleicht sollte
ich pyqt nochmal installieren.
Ich hab es über Windows auch mit pyuic probiert und siehe da
einwandfrei schön mit codegerüst.
Also ich weiss nicht woran es noch liegen könnte vielleicht sollte
ich pyqt nochmal installieren.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich sehe schon dass du dich da in etwas verrennst, das eigentlich keine gute Idee ist. Wieso hälst du denn so am autogenerieren des Codes fest? Ich habe dich auch so verstanden, dass du dann den generierten Code dann noch von Hand weitereditieren willst, was gleich die zweite rote Alarmleuchte aufblinken lässt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
@stockie
Natürlich kann Dir keiner vorschreiben, wie Du den uic-Loader benutzt, ob über pyuic hardkodierend oder dynamisch zur Laufzeit, trotzdem bietet letzteres gewisse Vorteile:
Du sparst Dir die Umwandlung pyuic bla.ui > bla.py, d.h. Du kannst im Designer Dein Gui-Layout ändern und mit diesen Änderungen sofort arbeiten, was gerade dem Anspruch einer dynamischen Scriptsprache entgegen kommt (aber selbst in C++ und Qt ist das der "Goldstandard").
Nachteile sehe ich hier eigentlich keine, so ist z.B. die Laufzeitgenerierung der Gui-Klasse zeitlich vernachlässbar klein, und nötige nachträgliche Änderungen am Quelltext der pyuic-Klassen ist eher ein Hinweis auf ein falschen Lösungsansatz. Sollten diese Änderungen dennoch nötig sein, so geht das auch in Deiner Gui-Basisklasse, da diese den Gui-Entwurf erbt.
Bsp. für dynamisches Laden der ui-files (aus Riverbank-Doku):
Das obige Bsp. verhält sich so, wie eine Mehrfachvererbung mit Deiner Ui_ Klasse aus der pyuic-generierten Datei anstelle form_class.
Noch einfacher gehts, wie cofi gepostet hat, wobei hier die Basisklassen Deiner Klasse und der ui-Datei identisch sein müssen.
Natürlich kann Dir keiner vorschreiben, wie Du den uic-Loader benutzt, ob über pyuic hardkodierend oder dynamisch zur Laufzeit, trotzdem bietet letzteres gewisse Vorteile:
Du sparst Dir die Umwandlung pyuic bla.ui > bla.py, d.h. Du kannst im Designer Dein Gui-Layout ändern und mit diesen Änderungen sofort arbeiten, was gerade dem Anspruch einer dynamischen Scriptsprache entgegen kommt (aber selbst in C++ und Qt ist das der "Goldstandard").
Nachteile sehe ich hier eigentlich keine, so ist z.B. die Laufzeitgenerierung der Gui-Klasse zeitlich vernachlässbar klein, und nötige nachträgliche Änderungen am Quelltext der pyuic-Klassen ist eher ein Hinweis auf ein falschen Lösungsansatz. Sollten diese Änderungen dennoch nötig sein, so geht das auch in Deiner Gui-Basisklasse, da diese den Gui-Entwurf erbt.
Bsp. für dynamisches Laden der ui-files (aus Riverbank-Doku):
Code: Alles auswählen
form_class, base_class = uic.loadUiType("demo.ui")
class DemoImpl(QtGui.QWidget, form_class):
def __init__(self, *args):
QtGui.QWidget.__init__(self, *args)
self.setupUi(self)
Noch einfacher gehts, wie cofi gepostet hat, wobei hier die Basisklassen Deiner Klasse und der ui-Datei identisch sein müssen.