2012-01-25 24 views
8

Las ventanas de nivel superior de Tkinter parecen tener dos "modos": donde la aplicación determina el tamaño y el usuario controla el tamaño. Tenga en cuenta este código:¿Qué controla el cambio automático de tamaño de ventana en Tkinter?

from tkinter import * 

class Test(Frame): 
    def __init__(self,parent): 
     Frame.__init__(self,parent) 
     self.b1 = Button(self, text="Button 1",command=self.b1Press) 
     self.b1.pack() 

    def b1Press(self): 
     print("b1Press") 
     label = Label(self, text="Label") 
     label.pack() 

root = Tk() 
ui = Test(root) 
ui.pack(fill='both', expand=1) 
root.mainloop() 

Cada vez que presiono el botón, la ventana visible cambia de tamaño para adaptarse a una etiqueta adicional. Sin embargo, si cambio el tamaño de la ventana manualmente (con el mouse), entonces detiene este comportamiento de cambio de tamaño automático y, a partir de ese momento, tengo que cambiar manualmente el tamaño de la ventana para ver los nuevos botones a medida que se agregan.

¿Qué determina si el tamaño de una ventana de nivel superior está bajo el control de la aplicación o del usuario?

¿Cómo puede la aplicación recuperar el tamaño automático una vez que el usuario ha cambiado el tamaño manualmente?

Respuesta

12

La regla es bastante simple: una ventana de nivel tiene un tamaño fijo siempre que se le haya asignado un tamaño fijo, de lo contrario, "se encoge para ajustarse".

Hay dos formas de dar un tamaño fijo a la ventana de nivel superior: el usuario puede redimensionarla manualmente, o su código de aplicación puede llamar al wm_geometry para darle un tamaño al inicio.

Para restablecer el comportamiento original, otorgue a la ventana una geometría nula. Por ejemplo:

def __init__(self,parent): 
    ... 
    self.b2 = Button(self, text="Reset", command=self.b2Press) 
    self.b2.pack() 

def b2Press(self): 
    self.winfo_toplevel().wm_geometry("") 
+0

Genial, de hecho, una respuesta bastante simple, pero que he tenido problemas para encontrar. – timbod

Cuestiones relacionadas