Tkinter: Fensterhöhe setzen/begrenzen

Fragen zu Tkinter.
ian
User
Beiträge: 4
Registriert: Mittwoch 9. Januar 2013, 10:02

Tkinter: Fensterhöhe setzen/begrenzen

Beitragvon ian » Sonntag 8. Januar 2017, 15:24

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?
Sirius3
User
Beiträge: 6633
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: Tkinter: Fensterhöhe setzen/begrenzen

Beitragvon Sirius3 » Sonntag 8. Januar 2017, 16:44

@ian: Du willst nicht manuell eine Fenstergröße setzen, sondern dem Fenstermanager sagen, dass er das Fenster über den ganzen Bereich darstellt (maximiert).

  1. import tkinter as tk
  2.  
  3. root = tk.Tk()
  4. root.wm_state('zoomed')
  5. # Fenster mit Dummy-Inhalten füllen
  6. for ii in range(50):
  7.     tk.Label(root, text="Label {0:d}".format(ii)).pack()
  8. root.mainloop()
Zuletzt geändert von Sirius3 am Sonntag 8. Januar 2017, 17:12, insgesamt 1-mal geändert.
BlackJack

Re: Tkinter: Fensterhöhe setzen/begrenzen

Beitragvon BlackJack » Sonntag 8. Januar 2017, 17:11

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
Sirius3
User
Beiträge: 6633
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: Tkinter: Fensterhöhe setzen/begrenzen

Beitragvon Sirius3 » Sonntag 8. Januar 2017, 17:18

@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.
ian
User
Beiträge: 4
Registriert: Mittwoch 9. Januar 2013, 10:02

Re: Tkinter: Fensterhöhe setzen/begrenzen

Beitragvon ian » Sonntag 8. Januar 2017, 19:45

@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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder