Tkinter Optik unter verschiedenen Linux Distributionen

Fragen zu Tkinter.
maffu
User
Beiträge: 2
Registriert: Dienstag 3. Februar 2009, 09:05
Wohnort: Köln

Hallo Comunity,

ich arbeite mich seit kurzem in Tkinter ein und hatte bislang immer gelesen dass einer der riesen Vorteile von Tkinter die Verwendbarkeit auf Linux, Windows und Mac ist. Jetzt hab ich mir ne kleine GUI unter Python 2.6 auf nem Ubuntu 8.04 zusammengebaut und diese mal auf meinen HomePC unter Ubuntu 9.04 gestartet. Zu meiner völligen Überaschung musste ich feststellen, daß die Optik ein bischen zerhauen dargestellt wird. Bei manchen Buttons erscheint keine Beschriftung und die Entryfelder sind viel größer als unter Ubuntu 8.04.

Bevor ich jetzt selbst mühsam die Fehler (bzw. Unterschiede) suche wollte ich mal in die Runde fragen ob es bekannte "Probleme" mit Tkinter auf verschiedenen Linuxen gibt. Ich hab die Widgets mit .place in einem Canvas platziert.

Thanx in advance,
Markus
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo maffu

Habe nur unter SuSE-Versionen Wechsel durchgeführt. Da stelle ich nicht auffällige Unterschiede fest. Nur beim Wechsel von Python 2.4 auf Python 2.5 gab es Verbesserungen der Standard Konfiguration von Tkinter. Ist es dir möglich dein Code-Schippsel zu zeigen? Was auch noch interessant wäre, wenn du Bilder deiner Anwendung unter den beiden Linux-Versionen Ubuntu 8.04 & 9.04 hier zeigen könntest.

Gruss wuf :wink:
Take it easy Mates!
BlackJack

@maffu: Vergiss `place()`, Du erlebst nämlich genau die Probleme die man damit bekommt. Layouts erstellt man besser mit `pack()`, `grid()`, und "Container"-Widgets wie `Frame`. Dann passen die sich nämlich automatisch den Schriftgrössen und Inhalten an, statt starr absoluten Vorgaben zu folgen, die wirklich sicher nur auf dem Rechner des Autors so aussehen wie sich der Autor das gedacht hat.
maffu
User
Beiträge: 2
Registriert: Dienstag 3. Februar 2009, 09:05
Wohnort: Köln

@wuf: Ich bin mir jetzt nicht mehr ganz sicher ob ich auf meinem "Develop" PC auf der Arbeit wirklich auch Python 2.6 hab, auf jeden Fall ist es n Ubuntu 8.04 und ich glaub da war auch schon 2.6 drauf. Leider komme ich jetzt ne Woche nicht an den Rechner, bin auf Lehrgang. Screenshots mache ich aber gerne mal und reiche die nach. Der Code-Schnipsel ist aktuell 1100 Zeilen lang... ich muss erst die signifikanten Stellen sondieren...

@BlackJack: Ich hab sowas auch schonmal gelesen, dachte mir aber dass das beste was man machen kann eine pixelgenaue Festlegung ist. Aber ich hab nicht daran gedacht dass die Schriftarten ja von System zu System unterschiedlich ausfallen können. Ich glaub dann muss ich den ganzen Kram umbauen... blöd blöd blöd...

@Beide: Danke für den Input soweit...
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

maffu hat geschrieben:@wuf: Ich bin mir jetzt nicht mehr ganz sicher ob ich auf meinem "Develop" PC auf der Arbeit wirklich auch Python 2.6 hab, auf jeden Fall ist es n Ubuntu 8.04 und ich glaub da war auch schon 2.6 drauf. Leider komme ich jetzt ne Woche nicht an den Rechner, bin auf Lehrgang. Screenshots mache ich aber gerne mal und reiche die nach.
Wie aus dem Posting von BlackJack schon hervorgeht: Das ist keine Frage verschiedener Python- und/oder Betriebssystemversionen und es handelt sich auch nicht um einen Bug o.ä., sondern liegt schlicht in der Eigenart des unsäglichen place-Geometriemanagers. Wer den bloß erfunden hat ... :twisted:

Der Screenshot wird zur Lösung des Problems also gar nichts beitragen.
maffu hat geschrieben:Ich glaub dann muss ich den ganzen Kram umbauen...
Genau, das ist der einzige Weg, da herauszukommen ... :wink:
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo maffu

Der Beitrag von BlackJack ist ein wichtiger Hinweis. Ich glaube selber auch das Problem liegt bei der Verwendung der Layout-Methode 'place'. Arbeite einfach einmal mit der Layout-Methode 'pack'. Das ist evt. die Lösung des Problems.

Gruss wuf :wink:
Take it easy Mates!
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

maffu hat geschrieben:ich arbeite mich seit kurzem in Tkinter ein und hatte bislang immer gelesen dass einer der riesen Vorteile von Tkinter die Verwendbarkeit auf Linux, Windows und Mac ist.
Das gilt für jedes andere brauchbare Toolkit auch (wobei man darüber streiten kann ob Tkinter brauchbar ist).
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

DasIch hat geschrieben:(wobei man darüber streiten kann ob Tkinter brauchbar ist).
Ach nee, bitte nicht schon wieder.

Wer Lust drauf hat, kann sich ja die Threads heraussuchen, wo das schon zur Genüge (eigentlich mehr als das) ausgebreitet wurde.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

@DasIch: Mit was für einem Toolkit arbeitest den du?

Gruss wuf :wink:
Take it easy Mates!
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Lasst euch von DasIch nicht provozieren. Sonst driftet der Thread vom Thema ab.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

wuf hat geschrieben:@DasIch: Mit was für einem Toolkit arbeitest den du?
Qt. Platform unabhängig, sieht überall recht gut aus, ist sehr gut dokumentiert und hat Lösungen für zig Probleme gleich parat. Wenn ich z.B. einen Mediaplayer haben will bräuchte ich nur Qt.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo DasIch

War im Forum nicht einmal eine Diskussion über die bevorstehende Freigabe der Qt-Lizenz? Was hat sich da weiter getan? Bis jetzt schreckten mich Lizenz-Bindungen immer ab mich näher mit solchen Toolkits zu beschäftigen weil einem plötzlich die Hand des Gesetzes an die Gurgel greifen könnte. Nach dem durchlesen des Buches 'Das umfassende Handbuch' der Autoren Ernesti & Kaiser habe ich mich zum ersten mal näher mit Qt beschäftigt. In diesem Zusammenhang installierte ich Qt4 auf meinem System. Die sehr umfangreiche Installation konnte ich erstaunlicherweise problemlos durchführen. Muss schon sagen du arbeitest da natürlich mit einem Juwel von einem GUI-Toolkit. Wie du vermutlich auf dem Büchermarkt auch schon festgestellt hast schrieben die beiden erwähnten Autoren ein neues Buch zu Python-3. Ich schaute mir im Web einmal das Inhaltsverzeichnis des neuen Buches an und stellte fest, dass unter dem Kapitel GUI nicht mehr über Qt sondern Tkinter geschrieben wird was mich überraschte. Aber ich vermute der Grund für diesen Wechsel war nur weil Qt noch nicht kompatibel mit Python-3 ist oder bin ich da falsch? Momentan arbeite ich mich in wxPython ein und muss sagen auch dieser GUI-Toolkit stellt sehr schöne Sachen bereit. Früher war für wxPython zuwenig Dokumentation verfügbar um sich didaktisch einzuarbeiten. Aber jetzt mit dem Buch 'wxPython IN ACTION', welches sehr gut geschrieben ist macht es Spass erste Gehversuche mit diesem Toolkit zu machen. Werde mich später auch noch mit Qt beschäftigen.

Ok! 'DasIch' ich wünsche dir noch viel Spass beim arbeiten mit Python und Qt.

Gruss wuf :wink:
Take it easy Mates!
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

PyQt4 ist schon seit einiger Weile kompatibel zu Python 3.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

wuf hat geschrieben:War im Forum nicht einmal eine Diskussion über die bevorstehende Freigabe der Qt-Lizenz?
Qt ist nun unter LGPL. PyQt nicht, aber sie haben recht großzügige Ausnahmen für freie Software (nichtsdestotzotz hoffe ich ja, dass jemand da ein hübscheres LGPL'd-Binding macht... blöderweise ist Qt eine C++-Library, da geht das nicht ganz so nett wie C-Libraries, aber auch da gibt es den ein oder anderen Helfer).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

Ich verwende immer place, weil ich es praktischer finde, es genau klar zu stellen, wohin das Teil soll.
Bei pack bin ich mir nie sicher, ob er es drüber oder drunter tut.
Auch ist es dann zu oft beinand (kein Leerraum).

Hm... das es unter jeder Version anders ausschaut ... konnte ich bei mir nicht feststellen.

Allerdings habe ich festgestellt, dass von Ubuntu 7.10 auf 08.04 dann überhaupt die ganzen Schriften nicht mehr gestimmt haben.
Ebenso konnte sich 08.04 die von mir Eingestellte Grafische Auflösung nicht merken.
Aber besonders von Hocker hat mich das mit dem Idlle gehauen: Da war die Schrift zwar auf 12 eingestellt, aber in Wirklichkeit war die Schriftgröße mind. 16. :shock:

Könnte mir daher durchaus vorstellen, dass das Problem nicht nur allein an Python (bzw. den Befehlen) liegt.
Zumindest müsste ich das wohl mal selbst etwas ausführlicher testen ... .
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Erwin hat geschrieben:Ich verwende immer place, weil ich es praktischer finde, es genau klar zu stellen, wohin das Teil soll.
Bei pack bin ich mir nie sicher, ob er es drüber oder drunter tut.
Auch ist es dann zu oft beinand (kein Leerraum).
Den Einsatz von place() solltest du dir wirklich abgewöhnen. Zu Zeiten, als übliche Monitore nur über 80x25 Zeichen ansprechbar waren, mag das der richtige Weg gewesen sein ...

Wenn du den pack()-Manager richtig einsetzt, dann kannst du exakt festlegen, wo welches Widget liegt - und das stimmt dann auf einem anderen Rechner mit anderen Schriftarten, anderer Auflösung etc. auch noch. Und das mit dem Leerraum kannst du auch einstellen. :wink:
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

@ numerix

Anfangs war ich von pack ja begeistert, eben wegen der Anpassung.
Aber später merkte ich, dass ich genau dies (das Anpassen der Größe) im laufe der Zeit eher störend für mich war.
Weil ich bin mehr ein Fan davon, dass es xx-pixel groß sein soll, ungeachtet dessen, ob das Fenster klein, oder groß ist.
Und die Schrift ... wenn Jemand eine große Schrift einstellt, kann man es vielleicht ebenfalls nicht mehr richtig erkennen, weil alles größer wird ... ?

Hm... aber vielleicht sollte ich generell mal mit 2 kleinen Programmen einen Umfangreichen Test machen ... .
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Erwin hat geschrieben:Weil ich bin mehr ein Fan davon, dass es xx-pixel groß sein soll, ungeachtet dessen, ob das Fenster klein, oder groß ist.
Und genau das ist quatsch. Wir leben nicht mehr in einer 800x600 Welt, die Displaygrößen variieren von iPhone-Größer bis hin zu 24"-Monitor (die übrigens erstaunlich billig geworden sind, ich frage mich manchmal echt warum ich mir das noch antue). Die Auflösungen veriieren dementsprechnd, noch dazu dass die Zahl der DPI sehr verschieden sein kann.
Erwin hat geschrieben:Und die Schrift ... wenn Jemand eine große Schrift einstellt, kann man es vielleicht ebenfalls nicht mehr richtig erkennen, weil alles größer wird ... ?
Ähm, wenn dein Programm nicht mitskaliert, dann kann mans natürlich nicht erkennen. Aber ich dachte nicht-skalierbare GUIs wären 2002 mit der Einführung des .NET-Frameworks und dem Tod von Visual Basic 6 ausgestorben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Erwin
User
Beiträge: 141
Registriert: Donnerstag 9. Juni 2005, 08:51

Tja, müsste ich wohl alles dann mal testen?
Sicher wäre es für andere Anwender praktischer, wenn die selbst die Größe indirekt mitbestimmten könnten.
Ich mache nie einen Fehler Zweimal.
Schließlich ist die Auswahl ja groß genug.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Erwin hat geschrieben:Tja, müsste ich wohl alles dann mal testen?
Ähm, und wie willst du alle möglichen Fonts, Fontgrößen, Themes auf allen möglichen Systemen (also speziell Windows, Aqua und X11) ausprobieren?
Erwin hat geschrieben:Sicher wäre es für andere Anwender praktischer, wenn die selbst die Größe indirekt mitbestimmten könnten.
Können sie ja, sie können in ihrem DE sagen wie die Sachen dargestellt werden sollen. Daher sollte sich das Programm an die Wünsche des Users anpassen und nicht andersrum.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten