2017-11-28 1 views
0

현재 동일한 계층 구조에 스크롤 막대와 캔버스가 있습니다. 캔버스에는 캔버스의 create_window 메소드를 사용하여 만든 프레임이 있습니다.Tkinter : 창 크기를 조정하지 않고 스크롤 막대 크기 조정

bbox ("all")에 맞게 스크롤 영역의 크기를 조정하는 캔바스가 구성 될 때 호출되는 바인딩이 있습니다. 작동하지만, 전체 창이 리사이즈 될 때 전용입니다 (예 : 캔버스에 표시 영역에없는 위젯을 추가하면 캔버스 '스크롤 영역을 변경할 수 있도록 창 크기를 조정해야합니다.).

이상적으로 스크롤 영역은 새 위젯이 캔버스의 보이지 않는 위치에 추가되는 즉시 변경해야합니다 (예 : 화면 외부). 현재 내가 뭘 잘못하고 있니? 어떤 조언을 부탁드립니다!

+0

[mcve]를 만드십시오. 아마도 수십 줄의 코드 만 취할 것입니다. –

답변

0

마음을 올바르게 읽었 으면 (디버깅 질문이 포함 된 Minimal, Complete, Verifiable Example을 포함해야합니다!) <Configure> 이벤트 수신시에만 scrollregion을 다시 계산합니다. 위젯이 크기가 바뀔 때만 트리거되며 캔버스에서 .create_window()을 호출하면 확실히 크기가 변경되지 않습니다. 가장 간단한 해결책은 위젯을 추가 할 때마다 스크롤 영역을 다시 계산하는 것입니다 (내가 아는 한이 동작에 의해 트리거되는 이벤트는 없습니다). 새로 추가 된 위젯에 자체 크기를 계산할 기회를주기 위해 먼저 .update_idletasks()에 전화해야 할 수도 있습니다.

0

scrollregion도 재설정하려면 내부 프레임의 <Configure> 이벤트에 바인딩을 만들어야합니다.

관련 문제