Unterschiedliche darstellung von Steuerelementen auf Distros

Probleme, Fragen und Lösungen
Antworten
Lookover
Foriker
Beiträge: 23
Registriert: Sa 9. Mai 2015, 23:37
Kontaktdaten:

Unterschiedliche darstellung von Steuerelementen auf Distros

Beitrag von Lookover » Fr 4. Sep 2015, 21:10

Ich habe Lubuntu 14.04.3 LTS auf zwei Maschinen installiert.

Soweit ich das sehe ist alles ident.

Aber das Design der Steuerelemente (Buttons, Tabs, Frames usw) sieht auf einem der Geräte anders aus. (das schon bereits Ausserhalb von Gambas im System)
Vor allem Margin auf Buttons usw sind anders.

Das Problem an dieser Sache ist dass meine Gambas Programme nicht mehr passen.
Aufgrund der veränderten Größen von Buttons, Checkboxen usw passen die Formulare nicht mehr zusammen.

Weiters nehmen einige Steuerelemente (Buttons) die aus Gambas angegebene Hintergrundfarbe nicht an.

Das hat aber nichts mit dem "Erscheinungsbild" zu tun.
Damit habe ich bereits einiges getestet.

Ausserdem haben beide Maschinen das gleiche Erscheinungsbild und trotzdem unterschiedliche Steuerelemente.

Jemand eine Idee ??
lg aus Wien

Honsek
Foriker
Beiträge: 342
Registriert: Do 4. Okt 2007, 17:01
Kontaktdaten:

Re: Unterschiedliche darstellung von Steuerelementen auf Dis

Beitrag von Honsek » Sa 5. Sep 2015, 11:55

Hallo Lookover,

ja, das Problem kenne ich gut. Fast bei allen Projekten, die ich meinen Co-Autoren zuschicke, kommt genau das Resultat, das auch Dir auffällt. Die Lösung ist nicht ganz einfach, weil das Aussehen vom Desktop, von den Themes und dem eingesetzten Toolkit abhängt.

Tobias schrieb zu diesem Thema: "Aus Sicht der Entwickler gibt es hier nichts zu lösen: "It's not a bug, it's a feature". Deshalb bietet niemand eine Lösung an. ... Durch Themes kannst du selbst entscheiden, wie Dein Frame aussehen soll. Du musst nur ein Theme finden, welches den Frame so designt hat, wie Du es moechtest -- oder Du erstellst selbst ein passendes Theme. Man möchte niemandem von Seiten Gambas vorschreiben, wie ihr Frame auszusehen hat. Davon kann man halten, was man will, aber Fakt ist, dass die Toolkits QT und GTK (auf die Gambas keinen Einfluss hat!), es vorsehen, dass das Aussehen ihrer Widgets durch Themes bestimmt wird. Im Arch-Wiki gibt es einen Artikel (https://wiki.archlinux.org/index.php/Un ... plications) dazu, wie man QT- und GTK-Anwendungen gleich aussehen lässt. Das ist der herkömmliche (implizite) Lösungsansatz."

Mit freundlichem Gruß

Honsek
hans@gambas-buch.de
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!

Lookover
Foriker
Beiträge: 23
Registriert: Sa 9. Mai 2015, 23:37
Kontaktdaten:

Re: Unterschiedliche darstellung von Steuerelementen auf Dis

Beitrag von Lookover » Di 8. Sep 2015, 07:16

Hallo.

Danke für die Antwort
Ich habe vor dieser Antwort nun weiter versucht dieses Thema zu recherchieren.

Soweit ist mir das alles klar.
ABER: Ich habe ja vollen Einfluss auf beide Machinen und trotzdem ist es mir nicht möglich beide komplett gleich aussehen zu lassen.

Ist es Möglich auszulesen, welchen Widget Manager ich verwende. (Vermutlich wird der eine KDE und der andere QT verwenden)
Wie kann ich einen anderen Widget manager installieren, oder updaten ?

Selbst innerhalb der IDE, verhalten sich die Steuerelemente unterschiedlich.
Beispielsweise wird auf der einen Maschine die Hintergrundfarbe eines Buttons nicht angenommen und auf der andern schon

lg aus Wien

tux_
Moderator
Beiträge: 944
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: Unterschiedliche darstellung von Steuerelementen auf Dis

Beitrag von tux_ » Di 8. Sep 2015, 11:48

Fangen wir einmal anders an. Welche GUI-Komponente verwendest du in deinen Projekten? Zur Auswahl stehen derzeit gb.qt4, gb.qt5, gb.gtk, gb.gtk3 und gb.gui.
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

Lookover
Foriker
Beiträge: 23
Registriert: Sa 9. Mai 2015, 23:37
Kontaktdaten:

Re: Unterschiedliche darstellung von Steuerelementen auf Dis

Beitrag von Lookover » Di 8. Sep 2015, 17:00

Ich nehme an, mit GUI-Komponente meinst du den Widget Manager ?

Aber das weiß ich eben nicht !
Wie genau kann ich das herausfinden?

Jedenfals bekomme ich mit dem Befehl

Code: Alles auswählen

sudo awk '/\.so$/ {print $NF}' /proc/*/smaps | sort -u | egrep -i 'gtk|qt'

Code: Alles auswählen

/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/engines/libmurrine.so
/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/immodules/im-xim.so
/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/im-xim.so
/usr/lib/x86_64-linux-gnu/libfm/modules/gtk-fileprop-x-desktop.so
/usr/lib/x86_64-linux-gnu/libfm/modules/gtk-fileprop-x-shortcut.so
/usr/lib/x86_64-linux-gnu/libfm/modules/gtk-menu-actions.so
/usr/lib/x86_64-linux-gnu/libfm/modules/gtk-menu-trash.so
/usr/lib/x86_64-linux-gnu/qt4/plugins/iconengines/libqsvgicon.so
/usr/lib/x86_64-linux-gnu/qt4/plugins/imageformats/libqgif.so
/usr/lib/x86_64-linux-gnu/qt4/plugins/imageformats/libqico.so
/usr/lib/x86_64-linux-gnu/qt4/plugins/imageformats/libqjpeg.so
/usr/lib/x86_64-linux-gnu/qt4/plugins/imageformats/libqmng.so
/usr/lib/x86_64-linux-gnu/qt4/plugins/imageformats/libqsvg.so
/usr/lib/x86_64-linux-gnu/qt4/plugins/imageformats/libqtiff.so


Es sind also gtk-2, gtk-3 und qt4 Libarys geladen.

Auch in den Gambas Systeminformationen
sehe ich sowohl gtk-3 als auch qt und tq5 Libarys
Bild

Wie kann ich also herausfinden, was da verwendet wird.

tux_
Moderator
Beiträge: 944
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: Unterschiedliche darstellung von Steuerelementen auf Dis

Beitrag von tux_ » Di 8. Sep 2015, 17:29

Ich nehme an, mit GUI-Komponente meinst du den Widget Manager ?

Nein :-) Mit GUI-Komponente meine ich die graphische Gambas-Komponente, die in deinem Projekt verwendet wird. Du findest sie z.B. heraus, indem du in die Projektsteuerdatei ".project" deines Projekts siehst:
shell code
cat /der-pfad-zu-deinem-projekt/.project

Dort stehen mehrere "Component"-Zeilen drin. Um diese geht es.

Alternativ kannst du das Projekt in der IDE oeffnen und unter Project -> Properties -> Components nachsehen, welche Komponenten angekreuzt sind.
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

Lookover
Foriker
Beiträge: 23
Registriert: Sa 9. Mai 2015, 23:37
Kontaktdaten:

Re: Unterschiedliche darstellung von Steuerelementen auf Dis

Beitrag von Lookover » Di 8. Sep 2015, 19:34

Alles Klar.
Dort sind jede Menge (alle verfügbaren Komponenten) angehackt.

Nachdem ich auf "Nur verwendete Komponenten anzeigen" geklickt habe, sehe ich jetzt

In einem meiner Projekte sehe ich
"gb.gui QT/GTK+" Wechselkomponente

und in einem anderen etwas größeren Projekt sehe ich unter anderem
gb.qt4
gb.qt4.ext
gb.qt4.webkit

Bedeutet das nun, dass das eine Programm versucht mit qt4 darzustellen ?
Ist auf der ausführenden Maschine jedoch kein qt4 installiert sondern GTK wird das zu den Abweichungen führen ?

Was bedeutet das genau ?
Kann ich mein Projekt durch umstellen dieser Komponenten "einfach und problemlos" von qt auf gtk umstellen.
Im Idealfall kümmere ich mich dass auf der Ausführenden Maschine dann der entsprechende Widgetsatz installiert ist ?!

Und was genau ist die "gb.gui QT/GTK+" Wechselkomponente ?

Vielen Dank tux_

tux_
Moderator
Beiträge: 944
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: Unterschiedliche darstellung von Steuerelementen auf Dis

Beitrag von tux_ » Di 8. Sep 2015, 20:02

Dort sind jede Menge (alle verfügbaren Komponenten) angehackt.

Mmm, du hast diesen Bug also auch. Es scheint so, dass in manchen QT-Versionen diese Haken falsch gezeichnet werden. Ich habe mir heute nachmittag erst den Quelltext angesehen: eigentlich sollen dort Haken nur bei den ausgewaehlten Komponenten gezeichnet werden. Stattdessen werden ueberall Haken gezeichnet. Abere Leute scheinen dieses Problem nicht zu haben...

Bedeutet das nun, dass das eine Programm versucht mit qt4 darzustellen ?
Ist auf der ausführenden Maschine jedoch kein qt4 installiert sondern GTK wird das zu den Abweichungen führen ?

Genau. Wenn gb.qt4 ausgewaehlt ist, wird Gambas deine Fenster mit QT4 erstellen. Wenn QT4 auf einem Rechner nicht installiert ist, dann kann auch gb.qt4 nicht installiert sein und das Projekt kann gar nicht erst gestartet werden.

Was bedeutet das genau ?
Kann ich mein Projekt durch umstellen dieser Komponenten "einfach und problemlos" von qt auf gtk umstellen.
Im Idealfall kümmere ich mich dass auf der Ausführenden Maschine dann der entsprechende Widgetsatz installiert ist ?!

Ja, das ist eine herausragende Eigenschaft von Gambas. Du kannst zwischen QT und GTK hin- und herschalten, ohne an deinem Projekt etwas zu veraendern. Der Rest wird von Gambas intern geregelt. Es kann aber vorkommen, dass die Komponenten nicht zu 100% kompatibel arbeiten (abgesehen vom unterschiedlichen Aussehen, das ja gewollt ist). In diesem Fall kannst du ist einen Bug-Report[0][1] erstellen.

Und was genau ist die "gb.gui QT/GTK+" Wechselkomponente ?

Die Wurzel allen Uebels :-) Wenn ein Projekt gb.gui benutzt, dann wird beim Start des Projekts die aktuell verwendete Desktop-Umgebung ermittelt (z.B. KDE, Gnome, Mate, LXDE, Xfce, ...) und dann dem Desktop entsprechend eine der Komponenten gb.gtk, gb.gtk3, gb.qt4 oder gb.qt5 geladen.

Ich persoenlich bin kein Fan von gb.gui und benutze stets gb.qt4 (bzw. bald gb.qt5). Wenn du ein neues Projekt erstellst, kannst du dich zuerst fuer einen Projekttyp entscheiden. Dort gibt es u.a. "Graphical application", "Qt graphical application" und "GTK+ graphical application". Waehlst du das voreingestellte "Graphical application", erhaeltst du ein Projekt mit gb.gui. Auf diese Weisen landen die meisten Nutzer bei gb.gui-Projekten.

Deine System-Informationen oben sagen, dass dein Desktop als "LXDE" erkannt wurde. In diesem Fall wuerde gb.gui, glaube ich, versuchen gb.gtk zu verwenden.

Wie gesagt, ist meine Empfehlung, sich auf ein Toolkit festzulegen. Qt4 hat mir bisher immer gute Dienste erwiesen.

[0] http://gambaswiki.org/bugtracker
[1] http://gambaswiki.org/wiki/doc/report
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

Lookover
Foriker
Beiträge: 23
Registriert: Sa 9. Mai 2015, 23:37
Kontaktdaten:

Re: Unterschiedliche darstellung von Steuerelementen auf Dis

Beitrag von Lookover » Di 8. Sep 2015, 20:23

Vielen Dank für diese überaus kompetente Antwort !!
Ich glaube, ich verstehe alles !

Ich werde mit dieser Information nun experimentieren und versuchen umzugehen.
Ich hoffe, mich im Bedarfsfall nochmal in genau diesem Forum melden zu dürfen.

BZW Eine Frage noch:
Was passiert wenn ich wie du vorgeschlagen hast beispielsweise Fix qt4 oder qt5 wähle und auf dem ausführenden Gerät ist gtk installiert.
oder ich wähle qt5 und es ist nur qt4 installiert.
oder umgekehrt.
Ich nehme an, dass das Programm zwar problemlos läuft, aber der jeweilige Widgetsatz versucht den entsprechend anderen darzustellen doch eben mit den bekannten Abweichungen ?

Du schreibst dazu:
Genau. Wenn gb.qt4 ausgewaehlt ist, wird Gambas deine Fenster mit QT4 erstellen. Wenn QT4 auf einem Rechner nicht installiert ist, dann kann auch gb.qt4 nicht installiert sein und das Projekt kann gar nicht erst gestartet werden.

Sprichst du von dem Projekt in der IDE ?
Wie verhält es sich mit dem kompilierten ausführbaren Programm ?
Ist dass dann auch nicht ausführbar ?

lg aus Wien

tux_
Moderator
Beiträge: 944
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: Unterschiedliche darstellung von Steuerelementen auf Dis

Beitrag von tux_ » Di 8. Sep 2015, 21:30

Vielen Dank für diese überaus kompetente Antwort !! [...] Ich hoffe, mich im Bedarfsfall nochmal in genau diesem Forum melden zu dürfen.

Danke fuer die Blumen! Aber sicher kannst du erneut nachfragen.

Ich nehme an, dass das Programm zwar problemlos läuft, aber der jeweilige Widgetsatz versucht den entsprechend anderen darzustellen doch eben mit den bekannten Abweichungen ?

Du schreibst dazu:
Genau. Wenn gb.qt4 ausgewaehlt ist, wird Gambas deine Fenster mit QT4 erstellen. Wenn QT4 auf einem Rechner nicht installiert ist, dann kann auch gb.qt4 nicht installiert sein und das Projekt kann gar nicht erst gestartet werden.

Sprichst du von dem Projekt in der IDE ?
Wie verhält es sich mit dem kompilierten ausführbaren Programm ?
Ist dass dann auch nicht ausführbar ?

Wenn du ein festes Toolkit (QT4, QT5, GTK oder GTK3) eingestellt hast, dann *wird* dieses Toolkit verwendet oder, wenn es nicht verfuegbar ist, ein Fehler ausgegeben und das Programm kann nicht starten. Nur gb.gui sucht Alternativen, wenn ein Toolkit nicht verfuegbar ist. Die anderen Komponenten sind stur. Dabei macht es keinen Unterschied, ob du das Programm per IDE startest, per Konsole oder per Doppelklick auf ein kompiliertes Programm.

Angenommen dein Projekt nutzt gb.qt4. Wenn ein Bekannter dein Projekt ausfuehren moechte, aber QT4 auf seinem Rechner nicht installiert ist, dann kann er auch die Gambas-Komponente gb.qt4 nicht installiert haben, denn QT4 ist im Paketmanager deiner Distribution eine Abhaengigkeit von gb.qt4. Wenn also QT4 fehlt, muss auch gb.qt4 fehlen. In deinem Projekt ist gb.qt4 als Abhaengigkeit eingetragen. Wenn der Interpreter gb.qt4 nicht finden kann, wenn dein Bekannter dein Projekt startet, wirft er einen Fehler und beendet sich.

Es gibt die Moeglichkeit, aus deinem Projekt ein Installationspaket zu erstellen (anstatt einer einzigen ausfuehrbaren Datei), das automatisch QT4 und gb.qt4 als Abhaengigkeiten installiert. Dein Bekannter wuerde von dir das Paket bekommen und um dein Programm zu installieren, wuerde er zwangsweise QT4 und gb.qt4 auch installieren. So ist gesichert, dass dein Projekt auf seinem Rechner starten kann. Mit Installationspaketen kenne ich mich nicht aus, dafuer aber das Gambas-Buch[0].

[0] http://www.gambas-buch.de/dw/doku.php?id=k2:k2.6:start
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

Lookover
Foriker
Beiträge: 23
Registriert: Sa 9. Mai 2015, 23:37
Kontaktdaten:

Re: Unterschiedliche darstellung von Steuerelementen auf Dis

Beitrag von Lookover » Di 8. Sep 2015, 22:07

Alles Klar.
Ich kenn mich aus !

Ich habe mich mit exakt diesem Problem an 6 Foren gewendet und habe durchwegs nur Bulshit zu lesen bekommen.(Kein Schmäh !)

Ich bin sehr glücklich und dankbar für diese Auskunft !
Das bringt mich viel weiter !

lg aus Wien

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast