Wie kriegt man die komplette Fenstgröße heraus?
Mit winfo_height und winfo_width kriege ich nur die Größe des Innenlebens heraus.
Andreas
Fenstergröße mit Rand und Fensterleiste
Hallo andreaszdw
Hier die Ermittlung der Fenster-Aussenmasse:
Gruss wuf 
Hier die Ermittlung der Fenster-Aussenmasse:
Code: Alles auswählen
import Tkinter as tk
app_win = tk.Tk()
app_win.geometry("%dx%d+%d+%d" % (400, 300, 0, 0))
app_win.update_idletasks()
topbar_height = app_win.winfo_rooty() - app_win.winfo_y()
border_thickness = app_win.winfo_rootx() - app_win.winfo_x()
app_win_height = topbar_height + app_win.winfo_height() + border_thickness
app_win_width = app_win.winfo_width() + 2 * border_thickness
print "Fenster Innenabmessung", app_win.winfo_width(), app_win.winfo_height()
print "Titelbar- & Rahmendicke", topbar_height, border_thickness
print "Fenster Aussenabmessung", app_win_width, app_win_height
app_win. mainloop()

Take it easy Mates!
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Hmm, das klappt bei mir nicht:
Ich weiss aber gar nicht, ob Programme unter Linux eine Chance haben, das herauszufinden. Das Zeichnen des Rahmens und der Titelzeile ist ja Sache des Window-Managers.
Code: Alles auswählen
Fenster Innenabmessung 400 300
Titelbar- & Rahmendicke 0 0
Fenster Aussenabmessung 400 300
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Und der Rahmen muss ja weder auf allen Seiten gleich breit sein, noch auf einer Seite über die ganze Seite die gleiche Breite haben. Ausserdem entscheidet über den Rahmen ja nicht zwingend das System auf dem das Programm läuft, sondern das auf dem das Display ist. Weiss gar nicht ob man an die Information so überhaupt herankommen kann/soll.
Hallo Rebecca
Danke für deinen Hinweis. Habe das Skript nur unter 'Windows' getestet. Dort sieht die Ausgabe wie folgt aus:
Unter Linux habe ich das gleiche Ergebnis wie du.
Gruss wuf
Danke für deinen Hinweis. Habe das Skript nur unter 'Windows' getestet. Dort sieht die Ausgabe wie folgt aus:
Code: Alles auswählen
Fenster Innenabmessung 400 300
Titelbar- & Rahmendicke 30 8
Fenster Aussenabmessung 416 338
Gruss wuf

Take it easy Mates!
Hallo BlackJack
Beim Forum-Editor habe ich noch folgenden Effekt festgestellt. Gebe ich in meinem Skript den String ein:wird er in Python-Code-Tags bei mir bei der Ausgabe wie folgt präsentiert:
Was könnte das sein?
Gruss wuf
Habe bis jetzt noch nicht herausgefunden wie bei einem Tk-Hauptfenster die Rahmendicke (links, unten, rechts) idividuell bzw. die Dicke der Titelleiste verändert werden kann. Habe mein Skript nur unter 'Windows' ausgetestet. Hier scheinen diese Masse fix gegeben zu sein.BlackJack hat geschrieben:Und der Rahmen muss ja weder auf allen Seiten gleich breit sein, noch auf einer Seite über die ganze Seite die gleiche Breite haben.
Beim Forum-Editor habe ich noch folgenden Effekt festgestellt. Gebe ich in meinem Skript den String ein:
Code: Alles auswählen
Titelbar- & Rahmendicke
Code: Alles auswählen
Titelbar- & Rahmendicke
Gruss wuf

Take it easy Mates!
...... Das folgende Skript sollte auf Windows & Linux richtig funktionieren:
Gruss wuf 
Code: Alles auswählen
import Tkinter as tk
app_win = tk.Tk()
xpos = 100
ypos = 100
width = 400
height = 300
app_win.geometry("%dx%d+%d+%d" % (width, height, xpos, ypos))
app_win.update_idletasks()
topbar_height = app_win.winfo_rooty() - ypos
border_thickness = app_win.winfo_rootx() - xpos
app_win_height = topbar_height + app_win.winfo_height() + border_thickness
app_win_width = app_win.winfo_width() + 2 * border_thickness
print "Fenster Innenabmessung", app_win.winfo_width(), app_win.winfo_height()
print "Titelbar- und Rahmendicke", topbar_height, border_thickness
print "Fenster Aussenabmessung", app_win_width, app_win_height
app_win. mainloop()

Take it easy Mates!
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Wie gesagt, unter Linux ist das Zeichnen des Rahmens und der Titelleiste Sache des Windowmanagers, nicht der Applikation.wuf hat geschrieben:Habe bis jetzt noch nicht herausgefunden wie bei einem Tk-Hauptfenster die Rahmendicke (links, unten, rechts) idividuell bzw. die Dicke der Titelleiste verändert werden kann.
Mit meiner normalen Fvwm-Konfiguration funktioniert dein Skript jetzt. Wenn ich allerdings die Titelleiste woanders habe als oben stimmt es auch wieder nicht.
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
OK Rebecca
Gruss wuf
Danke für deine Antwort. Ich wusste leider nicht, dass Titelleisten bei Hauptfenstern noch woanderst angebracht sein können (links, unten oder rechts?). Somit kann mein Skript natürlich nicht für alle Varianten angewendet werden.Rebecca hat geschrieben: Wenn ich allerdings die Titelleiste woanders habe als oben stimmt es auch wieder nicht.
Gruss wuf

Take it easy Mates!
Code: Alles auswählen
Fenster Innenabmessung 400 300
Titelbar- und Rahmendicke 15 2560
Fenster Aussenabmessung 5520 2875

ArchLinux/dwm
the more they change the more they stay the same