Seite 1 von 1

Tkinter: Fensterhöhe setzen/begrenzen

Verfasst: Sonntag 8. Januar 2017, 15:24
von ian
Hallo zusammen,

ich versuche, die Höhe eines Tkinter-Fensters auf die sichtbare Höhe des Bildschirms zu begrenzen und arbeite mit Python 3.4.4 unter Windows 7.

Zunächstmal scheint Tkinter die Windows-Startleiste nicht zu berücksichtigen, d.h. die Fensterhöhe, die beim Erzeugen automatisch gesetzt wird, wird auf die gesamte Bildschirmhöhe begrenzt, und das untere Ende des Fensters verschwindet hinter der Startleiste.

Ich habe nun die Fensterhöhe ermittelt, die ich tatsächlich haben will, und sie mit maxsize als obere Grenze gesetzt.
Beispielcode:

Code: Alles auswählen

import tkinter as tk

root = tk.Tk()
maxheight = root.winfo_screenheight() - 78
root.maxsize(height=maxheight)
# Fenster mit Dummy-Inhalten füllen
for ii in range(50):
    tk.Label(root, text="Label {0:d}".format(ii)).pack()
root.configure(height=maxheight)
root.mainloop()
Dieses Skript erzeugt aber wieder ein Fenster, das hinter der Startleiste verschwindet. Wenn ich die Höhe manuell ändere, greift anschließend die Begrenzung so, wie ich es haben will. Nur die automatisch gesetzte Höhe am Anfang ist zu hoch.
Das manuelle Setzten der Höhe mit root.configure (vorletzte Zeile) ändert daran auch nichts.

Kann mir irgendjemand sagen, wo das Problem liegt?

Re: Tkinter: Fensterhöhe setzen/begrenzen

Verfasst: Sonntag 8. Januar 2017, 16:44
von Sirius3
@ian: Du willst nicht manuell eine Fenstergröße setzen, sondern dem Fenstermanager sagen, dass er das Fenster über den ganzen Bereich darstellt (maximiert).

Code: Alles auswählen

import tkinter as tk

root = tk.Tk()
root.wm_state('zoomed')
# Fenster mit Dummy-Inhalten füllen
for ii in range(50):
    tk.Label(root, text="Label {0:d}".format(ii)).pack()
root.mainloop()

Re: Tkinter: Fensterhöhe setzen/begrenzen

Verfasst: Sonntag 8. Januar 2017, 17:11
von BlackJack
Wobei das nur unter Windows funktioniert. Unter Linux und MacOS bekommt man für 'zoomed' einen: TclError: bad argument "zoomed": must be normal, iconic, or withdrawn

Re: Tkinter: Fensterhöhe setzen/begrenzen

Verfasst: Sonntag 8. Januar 2017, 17:18
von Sirius3
@BlackJack: das kommt auf's konkrete System an (zumindest unter MacOS funktioniert's). Aber Du hast Recht: sobald man mit so systemnahen Einstellungen arbeitet, sind die Programme nicht mehr wirklich portabel.

Re: Tkinter: Fensterhöhe setzen/begrenzen

Verfasst: Sonntag 8. Januar 2017, 19:45
von ian
@Sirius3
Ich will das Fenster nicht maximieren, sondern nur verhindern, dass es höher wird als der sichtbare Bildschirmbereich. Insbesondere möchte ich erreichen, dass ich standardmäßig beim Öffnen das ganze Fenster sehen kann, ohne es erst manuell einstellen zu müssen. Ich weiß aber nicht, warum das mit meinem Code nicht funktioniert.