PYUIC

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
stockie
User
Beiträge: 16
Registriert: Donnerstag 8. Februar 2007, 13:26

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 :-)
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Lade die ui zur Laufzeit anstatt Code zu generieren, dann sollte es gehen. Wenn dass nicht klappt solltest du dich bei deiner Distribution beschweren.
stockie
User
Beiträge: 16
Registriert: Donnerstag 8. Februar 2007, 13:26

Ich wollte eigentlich python code nutzen und QT als Frontend, die
Absicht war das ich mit pyuic pythoncode(Grundgerüst) erstellen wollte.
Leonidas
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
schnupp
User
Beiträge: 19
Registriert: Samstag 24. Januar 2009, 17:30
Wohnort: Hamburg

Hallo,

unter Debian habe ich auch noch ein pyuci4
Vielleicht mal schauen, ob evtl. zwei Versionen installiert sind.

Grüße
Frank
Benutzeravatar
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

Code: Alles auswählen

class Widget(QWidget):
snip..
    uic.loadUi("file.ui", self)
snap..
hive
User
Beiträge: 7
Registriert: Sonntag 15. März 2009, 20:14

stockie hat geschrieben: führe pyuic unter linux so aus:
pyuic test.ui -o test.py
Hallo stockie,

da ist einiges verdreht.
Gib es so ein:
pyuic -o test.py test.ui
oder bei mir:
pyuic4 -o test.py test.ui
Also immer "pyuic -o ziel.py quelle.ui"

dann funktioniert es.

hive
stockie
User
Beiträge: 16
Registriert: Donnerstag 8. Februar 2007, 13:26

erstmal mercy werde ich direkt mal morgen früh ausprobieren

:-9
hive
User
Beiträge: 7
Registriert: Sonntag 15. März 2009, 20:14

stockie hat geschrieben:erstmal mercy werde ich direkt mal morgen früh ausprobieren

:-9
Gern geschehen.
stockie
User
Beiträge: 16
Registriert: Donnerstag 8. Februar 2007, 13:26

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.
stockie
User
Beiträge: 16
Registriert: Donnerstag 8. Februar 2007, 13:26

Also....
jetzt funzt es, ich musste noch das Paket
PyQt4-devel.i386 installieren und hier war auch PYUIC4 drin und
damit hat es dann auch geklappt hihi
Leonidas
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
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@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):

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)
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.
Antworten