Python + QT was braucht man alles

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

lunar hat geschrieben: Nun verwendet aber nicht jedes Programm, welches QtGui verwendet, auch QtXml, gerade weil es mit z.B. lxml auch andere XML-Pakete gibt. Deine Lösung würde das gesamte Qt4-Toolkit beim Start laden, selbst wenn man nur an den GUI-Klassen interessiert ist.
Richtig, es gibt mindestens 8. QtGui, QtCore, QtNetwork, QtOpenGL usw die alle in PyQt4 zusammengefasst sind

Man könnte mit PyQt4.Qt sämtliche Klassen des Qt Framework laden, dann hätte Leonidas sein Scenario mit Qt.QApplication (nur halt noch mit dem Q davor). Dann würde aber auch das komplette Framework in den Speicher geladen, und wer will das schon.

Ich werde mich an die Examples halten und meinem Beispiel von weiter oben folgen

Code: Alles auswählen

import sys
from PyQt4 import QtCore, QtGui

app = QtGui.QApplication(sys.argv)
quit = QtGui.QPushButton("Quit")
BlackJack

Mit ein bisschen "hacken" bekommt man auch eine Lazy-Import hin, der nicht gleich alles importiert, sondern erst, wenn man die Sachen verwendet.
lunar

BlackJack hat geschrieben:Mit ein bisschen "hacken" bekommt man auch eine Lazy-Import hin, der nicht gleich alles importiert, sondern erst, wenn man die Sachen verwendet.
Das löst zwar das Geschwindigkeitsproblem, widerspricht aber irgendwie dem Sinn von Modulen, deren Zweck es doch ist, Code in logische Gruppen zu unterteilen.
BlackJack

Oder einen Namensraum zur Verfügung zu stellen. Ein Namensraum für alle Qt-Klassen ist doch eine nette Sache. Dass da dann zu viel drin ist, würde ich nicht gelten lassen, weil bei GUI-Code andere "Regeln" gelten als bei normalem Quelltext.
lunar

BlackJack hat geschrieben:Oder einen Namensraum zur Verfügung zu stellen. Ein Namensraum für alle Qt-Klassen ist doch eine nette Sache. Dass da dann zu viel drin ist, würde ich nicht gelten lassen, weil bei GUI-Code andere "Regeln" gelten als bei normalem Quelltext.
Qt4 ist aber mehr als GUI, wesentlich mehr. Man Qt4 auch prima dazu hernehmen, einen Dämon zu schreiben, der das XML-Webservice fungiert. QtGui spielt da keine Rolle, wohl aber QtCore, QtNetwork und QtXml.

Das ist zwar ein Namensraum, die einzelnen Module haben aber total unterschiedliche Aufgaben.

Deswegen finde ich den aktuellen Ansatz perfekt. Ein Namensraum (PyQt4), welcher einzelne Module zur Verfügung (QtCore, QtGui, etc.) stellt.
g4borg
User
Beiträge: 16
Registriert: Donnerstag 4. Oktober 2007, 20:38

qt/__init__.py

Code: Alles auswählen

import PyQt4
from PyQt4.QtGui import QApplication as Application
bitte. :roll: eventuell noch ein schönes __all__[] bauen.

es gibt auch sinnvolle diskussionen... wenn man sowas präferiert baut man sich ein modul qt, importiert dort wie man es lieber hat und baut sich - je nachdem was man so braucht - langsam sein abstraktionstoolkit.

vorteil2: bei Qt5 bleibt der code womöglich kompatibel, angepasst wird nur die wrapper bib.

und dann spielt man es in ein svn und macht es publik. und dann vermehrt sich der code von selbst!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

g4borg hat geschrieben:bitte. :roll: eventuell noch ein schönes __all__[] bauen.
Habe ich schon vor zwei Jahren für Qt3 gemacht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten