Hi,
ich überlege mir gerade ob ich eine Art allgemeines Grundprogramm für PyQt Programme erstellen kann.
Im Prinzip ist die Grundstruktur bei vielen Programmen ähnlich. Hauptfenster, Menu, Toolbar, Statusbar, evt DockWidgets. Alles was man in praktisch jeder Applikation findet, inkl Ressourcen und Translation, würde ich gerne mal in ein Paket packen das man nehmen und erweitern kann.
Da ich noch nicht so fit in Python und Qt bin würde ich mich über Tips und Hilfen freuen. Wenn das einigermaßen fertig ist würde ich das auch gern in's Wiki packen wenn es irgendwo hin passt. Dann haben alle was davon
Was haltet Ihr von der Idee?
"Basistemplate" für PyQt Projekte
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Also du könntest mal gucken, wie das Templating im Qt-Designer funzt! Da kann man ja custom-Widgets hinterlegen, die man dann einfach im Editor nutzen kann. Ich denke das wäre der beste Weg.
Alternativ erstellst Du Dir ein Main-Widget im Designer, erweiterst das dann sukkessive um die Features, die du haben möchtest und speicherst das dann so weg, dass du es fortan nutzen kannst.
Alternativ erstellst Du Dir ein Main-Widget im Designer, erweiterst das dann sukkessive um die Features, die du haben möchtest und speicherst das dann so weg, dass du es fortan nutzen kannst.
Mhm, mit dem Designer möchte ich das ehrlich gesagt gar nicht machen. Zumindest das MainWidget, die Menus und Toolbars nicht. Das geht denke ich direkt im Code genauso einfach.
Das einzige was ich mit dem Designer machen würde sind die Dialoge, aber die sollen da noch gar nicht dazu weil die abhängig von der Applikation sind.
Und mit "Template" meine ich in erster Linie ein komplett lauffähiges Basisprogramm das man starten kann, ein MainWidget, ein Menu mit 2-3 Einträgen (File/Exit und Help/About zb) und eine Toolbar mit einem Exit Button erzeugt. Außerdem ein Verzeichnis für die Ressourcen und alles so vorbereitet das man die Ressourcen ergänzen kann. Und das gleiche auch für die Sprachen.
Alles soll halt möglichst generisch für eine Applikation mit Hauptfenster usw sein das man das einfach nehmen und erweitern kann.
Das einzige was ich mit dem Designer machen würde sind die Dialoge, aber die sollen da noch gar nicht dazu weil die abhängig von der Applikation sind.
Und mit "Template" meine ich in erster Linie ein komplett lauffähiges Basisprogramm das man starten kann, ein MainWidget, ein Menu mit 2-3 Einträgen (File/Exit und Help/About zb) und eine Toolbar mit einem Exit Button erzeugt. Außerdem ein Verzeichnis für die Ressourcen und alles so vorbereitet das man die Ressourcen ergänzen kann. Und das gleiche auch für die Sprachen.
Alles soll halt möglichst generisch für eine Applikation mit Hauptfenster usw sein das man das einfach nehmen und erweitern kann.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Wieso? Das ist doch der beste Weg, da es absolut unabhängig von der Sprache ist _und_ auch von der API!burli hat geschrieben:Mhm, mit dem Designer möchte ich das ehrlich gesagt gar nicht machen. Zumindest das MainWidget, die Menus und Toolbars nicht. Das geht denke ich direkt im Code genauso einfach.
Hast Du Dir den Designer mal angeguckt?
GUIs per Hand basteln ist imho das ätzenste was es gibt. Schau Dir doch mal den Code an, den pyuic generiert. Ich finde den nicht besonders furchtbar. Also galub ich nicht wirklich, dass man es von Hand unbedingt schöner hinbekommen kann.
Naja, mußt Du wissen - aber so ist das Sharing mit anderen Usern auch leichter - denn viele arbeiten mit dem Designer
Ich kenn den Designer und die von pyuic4 produzierten Files durchaus. Der Designer hat Vor- und Nachteile. Man kann mit dem Designer zb mal schnell ein Hauptmenu zusammentippen oder Dialoge erstellen.
Toolbars oder die Statuszeile finde ich von Hand gecodet einfacher, aber das ist wohl individuell unterschiedlich wie so vieles.
Man kann zb darüber streiten ob man die Funktion retranslateUi, die von pyuic4 erzeugt wird, gut findet oder nicht. Ich persönlich fände es schöner wenn die Translation direkt beim Widget wäre, aber vielleicht gibt es einen Grund warum es so gemacht wurde.
Toolbars oder die Statuszeile finde ich von Hand gecodet einfacher, aber das ist wohl individuell unterschiedlich wie so vieles.
Man kann zb darüber streiten ob man die Funktion retranslateUi, die von pyuic4 erzeugt wird, gut findet oder nicht. Ich persönlich fände es schöner wenn die Translation direkt beim Widget wäre, aber vielleicht gibt es einen Grund warum es so gemacht wurde.
Hast du eine Maus mit Bleigewichten drin, oder warum findest du Drag n' Drop so schwer? Mal abgesehen davon, dass der Designer dir das manuelle Laden der Resourcen komplett abnimmt.burli hat geschrieben:Toolbars oder die Statuszeile finde ich von Hand gecodet einfacher, aber das ist wohl individuell unterschiedlich wie so vieles.
Offenbar ist das händische Coden einer GUI doch nicht so der Hit, warum sonst würdest du nach einem Anwendungstemplate fragen
Lerne den Designer und den Linguist zu nutzen, dann ist die Erstellung der Oberfläche samt Einbindung der Resourcen und der Message-Dateien einfach. Was bleibt, ist das Programmieren der Logik, was dir aber niemand abnehmen kann.
Nein, kann man nicht. Sie ist einfach gut.Man kann zb darüber streiten ob man die Funktion retranslateUi, die von pyuic4 erzeugt wird, gut findet oder nicht.
Wie hast du dir das vorgestellt? Soll das Widget bei der Zuweisen von Text mittels setText automagisch den aktuellen QTranslator bemühen? Wenn ja, wie soll das Widget dann jene Fälle identifizieren, in denen Text gar nichtIch persönlich fände es schöner wenn die Translation direkt beim Widget wäre, aber vielleicht gibt es einen Grund warum es so gemacht wurde.
übersetzt werden kann oder soll?
Außerdem wird eine GUI in den meisten Fällen in der immer gleichen Sprache angezeigt. Welchen Sinn hat es also, die Übersetzung jedes Mal neu auszulesen? Das wäre nur Code, der nicht den geringsten Vorteil bietet.
Das hast du missverstanden, ich will das ja grad selber codenlunar hat geschrieben:Offenbar ist das händische Coden einer GUI doch nicht so der Hit, warum sonst würdest du nach einem Anwendungstemplate fragen
Ich schaue mir den Designer noch in ruhe an.lunar hat geschrieben: Lerne den Designer und den Linguist zu nutzen, dann ist die Erstellung der Oberfläche samt Einbindung der Resourcen und der Message-Dateien einfach. Was bleibt, ist das Programmieren der Logik, was dir aber niemand abnehmen kann.
Warum? Begründung?lunar hat geschrieben:Nein, kann man nicht. Sie ist einfach gut.Man kann zb darüber streiten ob man die Funktion retranslateUi, die von pyuic4 erzeugt wird, gut findet oder nicht.
Ich will ja lernen, aber da müsste ich halt schon ein bissel mehr erfahren.
Mein Anliegen ist es eigentlich, eine Basis zu erstellen die für die meisten PyQt Applikationen eh gleich ist und die man einfach nehmen und erweitern kann. Ich will das schon selber machen, aber ein paar Ratschläge und Tipps wären nicht schlecht
IMHO sollte so eine Vorlage aus der Praxis erwachsen. Also nicht als eigenständiges Projekt von Null, sondern als Essenz aus mehreren realen Projekten.
Also einfach mal drauf achten, was man bei einem neuen Projekt von einem alten per Kopieren und Einfügen übernimmt, um sich Tipparbeit zu sparen, und was von der Struktur her gleich ist und heraus gezogen werden kann.
Also einfach mal drauf achten, was man bei einem neuen Projekt von einem alten per Kopieren und Einfügen übernimmt, um sich Tipparbeit zu sparen, und was von der Struktur her gleich ist und heraus gezogen werden kann.
Mag sein, ich werde es aber trotzdem mal versuchenBlackJack hat geschrieben:IMHO sollte so eine Vorlage aus der Praxis erwachsen. Also nicht als eigenständiges Projekt von Null, sondern als Essenz aus mehreren realen Projekten.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Wieso eigentlich fragst Du dann hier
Mal Spaß bei Seite - hast Du mit PyQt schon viel gemacht? Wenn nein, halte ich dieses Unterfangen auch für recht sinnfrei, weil Du dann ja gar nicht abschätzen kannst, was sinnvoll ist und was nicht!
Mal Spaß bei Seite - hast Du mit PyQt schon viel gemacht? Wenn nein, halte ich dieses Unterfangen auch für recht sinnfrei, weil Du dann ja gar nicht abschätzen kannst, was sinnvoll ist und was nicht!
Du hast mich missverstanden, ich versuche nämlich gerade, dir zu erklären, dass die Idee, Anwendungsvorlagen von vorneherein zu erstellen, unsinnig ist. Die Programmierung von Boilerplate-Code zur Erzeugung von GUIs nimmt dir der Designer ab, und ob du eigene Widgets später häufiger brauchst, kann dir nur die Erfahrung sagen.burli hat geschrieben:Das hast du missverstanden, ich will das ja grad selber codenlunar hat geschrieben:Offenbar ist das händische Coden einer GUI doch nicht so der Hit, warum sonst würdest du nach einem Anwendungstemplate fragen
Sie ist der richtige Kompromiss zwischen Kontrolle und Automatismus. Deine Idee, Übersetzungen automagisch im Widget selbst zu laden, nimmt dem Programmierer die Kontrolle über die Übersetzung, was die Behandlung von Sonderfällen erschwert. Eine solche Methode ermöglicht dagegen, die Übersetzung zu kontrollieren, und ermöglicht trotzdem Goodies wie das Umschalten der Sprache "on the fly".Warum? Begründung?lunar hat geschrieben:Nein, kann man nicht. Sie ist einfach gut.Man kann zb darüber streiten ob man die Funktion retranslateUi, die von pyuic4 erzeugt wird, gut findet oder nicht.
Vergiss die Idee, und lerne stattdessen die Qt-Tools richtig zu nutzen, und lagere Code erst dann aus, wenn du ihn tatsächlich in mehreren Anwendungen benötigst. Ansonsten läuft nur Gefahr, Over-Engineering zu betreiben, und Code zu schreiben, denn du später nie brauchst.Ich will das schon selber machen, aber ein paar Ratschläge und Tipps wären nicht schlecht