Seite 1 von 1
PYQT4: Bilder zu Resourcen hinzufügen
Verfasst: Mittwoch 10. Juni 2009, 17:37
von microkernel
Hallo,
ich arbeite zurzeit an einem GUI-Python programm welches mit PYQT4 gemacht wurde. Jetzt habe ich in diesem Programm ein paar Bildern eingefügt und nun auch schon ein .exe draus gemacht. Nun ist mein Problem das es mich sehr nervt das die ganzen Bildern da frei rumliegen und jeder auf sie zugreifen/bearbeiten kann. Kann mir jmd. erklären wie ich all diese Bildern in eine Resource (z.B. eine .dll Datei) packen kann und dann in meinen Programm auf sie zugreifen kann?
Würde mich sehr um eine nützliche Antwort freuen.
LG
microkernel
Re: PYQT4: Bilder zu Resourcen hinzufügen
Verfasst: Mittwoch 10. Juni 2009, 18:41
von derdon
microkernel hat geschrieben:Nun ist mein Problem das es mich sehr nervt das die ganzen Bildern da frei rumliegen und jeder auf sie zugreifen/bearbeiten kann.
Warum ist das ein Problem? Gehörst du der "Anti-OpenSource-Initiative" an?
Verfasst: Mittwoch 10. Juni 2009, 19:06
von lunar
@derdon
Dieser Kommentar war ein bisschen überflüssig ... einfacheres Deployment wäre beispielsweise ein Grund, Bilder in die Exe-Datei zu integrieren.
PyQt4 bietet eine Resourcenverwaltung. Man kann im Designer oder per Hand Resourcen-Beschreibungen erstellen, und diese dann mittels "pyrcc4" in Python-Module oder mittels "rcc" in Binärdateien umwandeln, die man dann dynamisch nachladen kann. Mehr darüber steht in der Dokumentation von Qt4 und PyQt4.
Vielen Dank
Verfasst: Mittwoch 10. Juni 2009, 19:20
von microkernel
Vielen Dank "lunar"!
Ihr beitrag hat mir auf jeden fall weitergeholfen.
Leider noch eine Frage......
Verfasst: Mittwoch 10. Juni 2009, 19:41
von microkernel
Entschuldigung wenn es jetzt vielleicht ein bisschen lästig rüberkommt aber ich habe mir gerade die PyQt4 Docu durchgelesen und verstehe es immer noch nicht wie ich das machen soll.
Ich habe jetzt verstanden wie ich meine ganzen Bilder zu dieser Resource hinzufüge und wie ich sie dann abspeicher.
Aber was soll ich dann mit dieser ".qrc" Datei machen, wenn ich sie so haben will, das ich von meinen Hauptprogramm direkt auf diese Bildern zugreifen kann?
LG
microkernel
Verfasst: Donnerstag 11. Juni 2009, 12:54
von cofi
Wenn du den Designer verwendest, musst du nur ``pyrcc4`` auf deine `.qrc` Datei ausführen (Wenn du sie auch richtig als Ressource angegeben hast)
Verwendest du ihn nicht, musst du die erstellte Datei in jedem Skript importieren, in dem du die Bilder verfügbar haben willst. Die Notation (:/*pfad*) kümmert sich um den Rest.
Verfasst: Donnerstag 11. Juni 2009, 13:02
von veers
lunar hat geschrieben:@derdon
Dieser Kommentar war ein bisschen überflüssig ... einfacheres Deployment wäre beispielsweise ein Grund, Bilder in die Exe-Datei zu integrieren.
Das ist aber nicht der Grund welcher genannte. Wobei da das Einbetten dagegen nicht viel bringt,
reshacker lässt grüssen.
Jonas
Verfasst: Donnerstag 11. Juni 2009, 16:15
von microkernel
jetzt hab' ich eine aus dieser .qrc datei eine .py Datei gemacht. Aber WIE kann ich jetzt von meinen Programm aus auf die Bildern, welche jetzt in dieser Python Resourcen Datei sind, zugreifen???
LG
microkernel
Problem gelöst
Verfasst: Freitag 12. Juni 2009, 10:02
von microkernel
Ich habe jetztdas Problem gelöst:
Wenn man jetzt die ".qrc" Datei in eine Python Datei, mittels "pyrc4 -o" konvertiert hat, muss man nurnoch im hauptprogramm die Python Datei importieren:
und schon kann man im Programm mit folgendem Befehl die Bilder einfügen:
.
LG
microkernel
Verfasst: Freitag 12. Juni 2009, 10:21
von cofi
Ich hab da jetzt irgendwie ein Deja-Vu ...
Verfasst: Freitag 12. Juni 2009, 10:34
von Dill
findest du es nicht etwas zu viel verlangt, dass deine antworten auch gelesen werden?

Re: PYQT4: Bilder zu Resourcen hinzufügen
Verfasst: Montag 17. Mai 2010, 18:04
von Hyperion
Ich muss diesen Thread noch mal wiederbeleben, da ich zu blöde bin, das ganze anzuwenden.
Ich habe mit dem Designer ein .ui-File erzeugt und lade das dynamisch in meiner Applikation mittels uic.loadUi(pfad, self).
Zusätzlich habe ich eine Resourcen-Datei erstellt (ebenfalls mit dem Designer), in der sich zwei Icons befinden. Diese Icons kommen jeweils auf einen QPushButton und auch dort habe ich mich im Designer auf die Resource-Datei bezogen.
In der Vorschau sehe ich die Icons auch auf den Buttons - starte ich mein Python-Script jedoch, sehe ich nichts.
Wie muss ich hier vorgehen?
Ich habe auch mittels pyrcc4 ein Modul erstellt und importiere dieses in meinem Python-Script - ohne Erfolg. Die Resourcendatei liegt im selben Verzeichnis wie das .ui-File, die Icons unterhalb dieses Ordners in einem "icon"-Verzeichnis. Die Python-Applikation liegt ein Verzeichnis darüber.
Ich habe also folgende Struktur:
Code: Alles auswählen
/
script.py
icons.py
gui/
my_widget.ui
icons.qrc
icons/
close.png
calculate.png
Muss die mittels pyrcc4 kompilierte "icons.py" einen speziellen Namen haben? Inwiefern ist der Prefix wichtig (ich habe ihn "res" genannt).
Sorry, aber aus der Doku von Riverbank (und hier auch der offiziellen Qt-Doku) werde ich nicht schlau.
Re: PYQT4: Bilder zu Resourcen hinzufügen
Verfasst: Montag 17. Mai 2010, 18:18
von lunar
Importierst Du das Resourcen-Modul auch garantiert, bevor Du die UI-Dateien lädst? Alternativ kannst Du übrigens auch "rcc -binary" verwenden, um eine binäre Resourcendatei zu erzeugen. Die kannst Du dann zur Laufzeit über "QResource.registerResource" laden.
Re: PYQT4: Bilder zu Resourcen hinzufügen
Verfasst: Montag 17. Mai 2010, 18:26
von Hyperion
lunar hat geschrieben:Importierst Du das Resourcen-Modul auch garantiert, bevor Du die UI-Dateien lädst?
*narf* Danke für den Hinweis! Ich habe den import in ein anderes Script geschrieben...

(manchmal ist man so richtig fertig... Zeit zum Einkaufen und an die frische Luft gehen!)