2017-11-28 30 views
0

現在、同じ階層レベルにスクロールバーとキャンバスがあります。キャンバスには、キャンバスのcreate_windowメソッドを使用して作成されたフレームがあります。Tkinter:ウィンドウサイズを調整せずにスクロールバーのサイズを変更する

bbox( "all")に合わせてスクロール領域のサイズを変更するキャンバスが設定されているときに呼び出されるバインディングがあります。それは動作しますが、ウィンドウ全体のサイズが変更されたときにONLYが表示されます(キャンバスのスクロール領域を変更できるように、ウィジェットのサイズを変更する必要があります)。

理想的には、新しいウィジェットがキャンバスの目に見えない場所に追加されるとすぐにスクロール領域が変更される必要があります(画面外など)。私は現在、間違って何をしていますか?アドバイスありがとうございます!

+0

[mcve]を作成してください。おそらく数十行のコードを取るだけです。 –

答えて

0

私はあなたの心を正しく読んでいる(実際にはMinimal, Complete, Verifiable Exampleにデバッグに関する質問を含める必要があります)、<Configure>イベントの受信時にのみスクロール領域を再計算しています。これは、ウィジェットのサイズが変更されたときにのみトリガし、Canvasで.create_window()を呼び出すと、確かにサイズが変更されません。最も簡単な解決策は、ウィジェットをウィジェットに追加するたびに、スクロール領域の再計算を明示的に行うことです(私の知る限り、このアクションによって引き起こされるイベントはありません)。新しく追加されたウィジェットに独自のサイズを計算させるには、まず.update_idletasks()に電話する必要があります。

0

scrollregionをリセットするには、内枠の<Configure>イベントにバインドする必要があります。

関連する問題