Widgets Darstellung unter Windows/Linux/Mac

Fragen zu Tkinter.
Antworten
OTB
User
Beiträge: 15
Registriert: Samstag 24. März 2007, 17:54

Hallo
Ich arbeite mich gerade in Tkinter ein.
Mir ist aufgefallen, dass die Darstellung von Widgets auf meinem
Rechner mit Windows 7, Python 2.7 viel größer ist als mit Ubuntu 10.04, Python 2.6.
Da meine geplante Anwendung unter Windows XP, Windows 7 und diversen Linux und
Mac OSX Systemen laufen werden soll, befürchte ich nun, für jedes System
das Programm anpassen zu müssen. Ich hoffe das wird nicht der Fall sein, und ich
mache gerade nur irgendetwas nicht richtig.
Danke im voraus
OTB
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

OTB hat geschrieben:Ich hoffe das wird nicht der Fall sein, und ich
mache gerade nur irgendetwas nicht richtig.
Wenn ich mir Deinen Code so ansehe, würde ich schon sagen, dass Du da etwas falsch machst.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hyperion hat geschrieben:Wenn ich mir Deinen Code so ansehe, würde ich schon sagen, dass Du da etwas falsch machst.
Was für einen Glaskugel verwendest du? Welches Produkt?

Gruß wuf :wink:
Take it easy Mates!
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

wuf hat geschrieben:Was für einen Glaskugel verwendest du? Welches Produkt?
Ich sehe schon, dass Du keine hast oder eine schlechte, sonst wüßtest Du das ja bereits :-D
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

wuf hat geschrieben:
Hyperion hat geschrieben:Wenn ich mir Deinen Code so ansehe, würde ich schon sagen, dass Du da etwas falsch machst.
Was für einen Glaskugel verwendest du? Welches Produkt?

Gruß wuf :wink:
Ich würde mal sagen „Profil“ → „Beiträge des Benutzers suchen“, beziehungsweise „ah, ich erinnere mich“ oder „hier ist gar kein Code“.
BlackJack

@OTB: Wenn Du die GUI ordentlich mit Layouts und nicht mit absoluten Platzierungen und Grössenangaben gestaltet hast, dann sollte das eigentlich kein Problem sein.
OTB
User
Beiträge: 15
Registriert: Samstag 24. März 2007, 17:54

Hyperion hat geschrieben:
OTB hat geschrieben:Ich hoffe das wird nicht der Fall sein, und ich
mache gerade nur irgendetwas nicht richtig.
Wenn ich mir Deinen Code so ansehe, würde ich schon sagen, dass Du da etwas falsch machst.

Ich wollte die Frage allgemein stellen: gibt es
bekannte Probleme in dieser Richtung, da braucht es keinen Code.

einfaches Beispiel:

Code: Alles auswählen

from Tkinter import *

r=Tk()
b=Button(r, width=10, height=10)
b.pack()
r.mainloop()
OTB
User
Beiträge: 15
Registriert: Samstag 24. März 2007, 17:54

nomnom hat geschrieben:
wuf hat geschrieben:
Hyperion hat geschrieben:Wenn ich mir Deinen Code so ansehe, würde ich schon sagen, dass Du da etwas falsch machst.
Was für einen Glaskugel verwendest du? Welches Produkt?

Gruß wuf :wink:
Ich würde mal sagen „Profil“ → „Beiträge des Benutzers suchen“, beziehungsweise „ah, ich erinnere mich“ oder „hier ist gar kein Code“.

Hast Du sonst nix zu tun?
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

OTB hat geschrieben:Hast Du sonst nix zu tun?
Das sollte ich dich fragen.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi OTB

Danke für dein Code-Snippet. Beim Button-Widget ist die Dimension defaultmässig vom Zeichensatz abhängig da für width & height der Wert als Anzahl Zeichen und Zeilen interpretiert wird. Bei nur Verwendung der 'text'-Option ist die Dimension des Button-Widgets von der Textlänge, Anzahl Zeilen und verwendetem Font abhängig. Bei nur Verwendung der 'image'-Option bestimmt die Abmessung des Bildes in Pixels die Dimension des Button-Widgets. Bei Kombination nur der 'text'- und 'image'- mittels 'compound' bestimmen Text, Bild und Font die Dimension. Für dein Beispiel könnte es sein, dass Tk auf den verschiedenen Betriebsystemen defaultmässig nicht den gleichen Zeichensatz verwendet.

Hier ewas zum ausprobieren:

Code: Alles auswählen

from Tkinter import *

r=Tk()
b=Button(r, width=10, height=10)
b.pack()

b=Button(r, width=10, height=10, bg='yellow', font=('Helvetica', 8))
b.pack()

b=Button(r, width=10, height=10, bg='green',font=('Helvetica', 20))
b.pack()

b=Button(r, font=('Helvetica', 8))
b.pack()

b=Button(r, font=('Helvetica', 20))
b.pack()

r.mainloop()
Du musst dich auch noch mit der verfügbaren Dokumentation schlau machen.
Hast du auch beim Einsatz eines Canvas-Widgets bei dem du 'width' und 'height' in Pixels definierst auf den verschiedenen OS unterschiede festgestellt?

Gruß wuf :wink:
Take it easy Mates!
OTB
User
Beiträge: 15
Registriert: Samstag 24. März 2007, 17:54

wuf hat geschrieben:Hi OTB

Danke für dein Code-Snippet. Beim Button-Widget ist die Dimension defaultmässig vom Zeichensatz abhängig da für width & height der Wert als Anzahl Zeichen und Zeilen interpretiert wird. Bei nur Verwendung der 'text'-Option ist die Dimension des Button-Widgets von der Textlänge, Anzahl Zeilen und verwendetem Font abhängig. Bei nur Verwendung der 'image'-Option bestimmt die Abmessung des Bildes in Pixels die Dimension des Button-Widgets. Bei Kombination nur der 'text'- und 'image'- mittels 'compound' bestimmen Text, Bild und Font die Dimension. Für dein Beispiel könnte es sein, dass Tk auf den verschiedenen Betriebsystemen defaultmässig nicht den gleichen Zeichensatz verwendet.

Hier ewas zum ausprobieren:

Code: Alles auswählen

from Tkinter import *

r=Tk()
b=Button(r, width=10, height=10)
b.pack()

b=Button(r, width=10, height=10, bg='yellow', font=('Helvetica', 8))
b.pack()

b=Button(r, width=10, height=10, bg='green',font=('Helvetica', 20))
b.pack()

b=Button(r, font=('Helvetica', 8))
b.pack()

b=Button(r, font=('Helvetica', 20))
b.pack()

r.mainloop()
Du musst dich auch noch mit der verfügbaren Dokumentation schlau machen.
Hast du auch beim Einsatz eines Canvas-Widgets bei dem du 'width' und 'height' in Pixels definierst auf den verschiedenen OS unterschiede festgestellt?

Gruß wuf :wink:

Bei meinem Rechner und dem Rechner eines Bekannten war die Textdarstellung auf 150 % eingestellt.
http://windows.microsoft.com/de-DE/wind ... or-smaller
Nach Auswahl des Standardwertes ist jetzt alles so wie es sein sollte.
Vielen Dank für deine Hinweise, die mich auf die richtige Fährte gebracht haben.
lunar

@OTB: Im Regelfall sollte sich ein Programm nach den Vorgaben des Benutzers richten, und nicht umgekehrt. Genau deswegen verwendet man ja Layout-Verwaltung: Um unabhängig zu sein von den verschiedenen Systemkonfigurationen.
Antworten