Hallo,
kann man das Minimieren eines Fenster irgendwie unterbinden?
Ich benutze Python 3.3.0 unter Mac OS X 10.7 Lion.
Minimieren eines Fensters verhindern
Code: Alles auswählen
>>> import tkinter as tk
>>> root = tk.Tk()
>>> root.resizable(0, 0)
''
>>> root.resizable()
'0 0'
>>>
yipyip
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: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:
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:
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.
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()
Code: Alles auswählen
from Tkinter import *
root = Tk()
top = Toplevel(root)
top.transient(root)
root.mainloop()
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()