Minimieren eines Fensters verhindern

Fragen zu Tkinter.
Antworten
MorMod
User
Beiträge: 2
Registriert: Montag 10. Dezember 2012, 19:01

Hallo,
kann man das Minimieren eines Fenster irgendwie unterbinden?
Ich benutze Python 3.3.0 unter Mac OS X 10.7 Lion.
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Modale Dialoge könnten dein Problem lösen, da sie erst weggeklickt werden müssen ehe es weitergeht.
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Code: Alles auswählen

>>> import tkinter as tk
>>> root = tk.Tk()
>>> root.resizable(0, 0)
''
>>> root.resizable()
'0 0'
>>> 
Zum Nachlesen: http://effbot.org/tkinterbook/wm.htm

:wink:
yipyip
yipyip
User
Beiträge: 418
Registriert: Samstag 12. Juli 2008, 01:18

Ups, ich glaube, das ist nicht das, was du wolltest. Das Einzige, was mir noch einfaellt, ist 'overrideredirect'. Dabei wird aber die komplette Fensterdekoration geloescht.
:wink:
yipyip
anbabe
User
Beiträge: 12
Registriert: Freitag 4. Dezember 2009, 13:05

Windows XP, Python: 2.5.1

Das Verhindern des Minimierens eines Tkinter-Fensters kann mit der Option toolwindow erreicht werden. In der Menüleiste gibt es nur das Kreuz zum Schließen:

Code: Alles auswählen

from Tkinter import *
root = Tk()
root.attributes("-toolwindow", 1)
root.mainloop()
Kleiner optischer Nachteil ist, dass die Menüleiste und das Kreuz etwas kleiner sind als die Norm bzw. die Betriebssystemeinstellungen. Meines Wissens nach, kann nur mit einem Toplevel-Fenster und der Option transient ein Fenster mit einem Kreuz erzeugt werden, bei dem alles "ordentlich" aussieht:

Code: Alles auswählen

from Tkinter import *
root = Tk()
top = Toplevel(root)
top.transient(root)
root.mainloop()
Auch hier gibt es was zu meckern: Das root-Fenster bleibt im Hintergrund und kann zumindest optisch stören. Mit einem Trick kann es perfekt aussehen. Man versteckt das root-Fenster und muss dafür sorgen, dass dieses Fenster beim Schließen des Toplevel-Fensters ebenfalls sauber geschlossen wird. Ein Nutzer "sieht" nur dieses Toplevel-Fenster mit dem Kreuz:

Code: Alles auswählen

from Tkinter import *
root=Tk()
top=Toplevel(root)
top.geometry("200x100+50+50")

# root-Fenster wird auch beendet, wenn Toplevel mit dem Kreuz geschlosen wird:
top.protocol("WM_DELETE_WINDOW",root.destroy)

# Toplevel-Fenster nur mit Kreuz:
top.transient(root)

Label(top,text="\nEin Toplevel-Fenster pur\nund nur mit einem Kreuz").pack(side=TOP)
Button(top,text="Beenden",command=root.destroy).pack(side=BOTTOM)

# ohne Rahmen:
root.overrideredirect(TRUE)

# nur noch als Punkt bzw Rest links oben zu sehen:
root.geometry("0x0")
# wenn auch der Rest nicht zu sehen sein soll:
#root.geometry("0x0-10-10")

root.mainloop()
Man könnte auf das "Zusammenschmelzen" des root-Fensters verzichten, indem man es mit root.attributes("-alpha", 0.0) transparent macht. Nachteil: Ein darunter liegendes Objekt wäre bei einem eventuellen Mausklick nicht erreichbar. :twisted:
Antworten