2016-12-09 6 views
0

그래서 창 크기의 변화를 감지하고 Configure 메서드를 재정의 할 수 있다고 들었으므로 그렇게했으나 창을 변경하려고 시도 할 때 ' 전화가 된 것처럼 보입니다.구성 방법이 호출되지 않음

class ChangingCanvas(tk.Canvas): 
    def __init__(self,parent,**kwargs): 
     tk.Canvas.__init__(self,parent,**kwargs) 
     self.bind("<Configure>", self.resize) 
     self.height = self.winfo_height() 
     self.width = self.winfo_width() 

    def resize(self,event): 
     self.width = event.width 
     self.height = event.height 
     print(self.width, self.height,self.winfo_height()) 
     self.config(width=self.width, height = self.height) 

class Application(tk.Frame): 
    def __init__(self,master=None): 
     tk.Frame.__init__(self,master) 
     self.grid() 
     self.createWidgets() 

    def createWidgets(self): 
     self.canvas = ChangingCanvas(self,highlightthickness=0) 
     self.canvas.grid(column=1,row=1) 

아무 것도 인쇄되지 않으므로 크기 조정 방법에 포함되지 않습니다. 무슨 일이야?

답변

0

캔버스가 크기를 변경하지 않기 때문에 메서드가 호출되지 않습니다. 캔버스에 고유 한 색상을 지정하면 크기가 조정되지 않습니다. 이는 a) 주 창이 커지고 축소 될 때 응용 프로그램이 커지거나 작아 지도록 구성하지 않았기 때문에 b) 응용 프로그램이 커지고 축소되어 캔버스가 커지고 축소되도록 구성하지 않았기 때문입니다.

+0

그래서 캔버스의 크기를 기본 창 크기로 조정하려면 어떻게해야합니까? –

+0

해당 주제와 관련된 많은 질문과 답변이 있습니다. 'grid'를 사용한다면'sticky' 옵션을 사용할 필요가 있습니다. 행과 열의 가중치를 주어 여분의 공간이 할당되도록해야합니다. –

+0

아, 괜찮아. 나는 그것을 들여다 볼 것이다. –