2012-01-25 4 views
8

Tkinter 최상위 창에는 크기가 응용 프로그램에서 결정되는 위치와 사용자가 크기를 제어하는 ​​위치라는 두 가지 모드가 있습니다. 다음 코드를 고려하십시오 :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() 

버튼을 누를 때마다 보이는 창은 추가 레이블에 맞게 크기가 변경됩니다. 그러나 마우스로 수동으로 창 크기를 조정하면이 자동 크기 조정 동작이 중지되고 그 다음부터는 새 단추가 추가 될 때 창 크기를 수동으로 변경해야합니다.

최상위 창 크기가 응용 프로그램이나 사용자의 제어하에 있는지 여부를 결정하는 것은 무엇입니까?

사용자가 수동으로 크기를 조정 한 후 응용 프로그램이 자동 크기 조정을 다시 얻으려면 어떻게해야합니까?

답변

12

규칙은 꽤 간단합니다. 톱 레벨 윈도우는 고정 된 크기가 주어질 때마다 고정 된 크기를 갖습니다. 그렇지 않으면 "적합하도록 축소됩니다".

최상위 창에 고정 크기를 지정하는 방법에는 두 가지가 있습니다. 사용자가 수동으로 크기를 조정하거나 응용 프로그램 코드에서 wm_geometry을 호출하여 시작할 때 크기를 지정할 수 있습니다.

원래 동작을 다시 설정하려면 창에 Null Geometry를 지정하십시오. 예를 들면 다음과 같습니다.

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

위대한 - 실제로 충분히 간단한 대답이지만 찾을 수는 없습니다. – timbod

관련 문제