2016-12-09 12 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) 

何も印刷されていないので、resizeメソッドには入っていません。何が起こっていますか?

答えて

0

キャンバスがサイズを決して変更しないため、このメソッドが呼び出されていません。キャンバスに別の色を付けて、サイズが変更されていないことがわかります。これは、a)メインウィンドウが拡大縮小するときにアプリケーションが拡大および縮小するように構成していないこと、およびb)アプリケーションが拡大および縮小してキャンバスを拡大および縮小するように構成していないためです。

+0

メインウィンドウでキャンバスのサイズを変更するにはどうすればよいですか? –

+0

そのトピックに関連する多くの質問と回答があります。 'grid'を使用している場合、' sticky'オプションを使用する必要があります。余分なスペースが割り当てられるように、行と列の重みを与えなければなりません。 –

+0

ああ、ありがとう。私はそれを調べます –

関連する問題