2016-09-30 4 views
0

저는 하나의 프레임이 포함 된 캔버스에 스크롤바를 추가하려고했는데,이 프레임은 위젯을 보관하고 있습니다. 올바르게 표시되는 스크롤 막대를 추가했지만 캔버스에 아무런 영향을 미치지 않습니다.파이썬 tkinter : 캔버스 스크롤바가 나타 났지만 작동하지 않습니다.

area2=Frame(border2,bg="#FAFAFA") 
area2.pack(side="top",fill=BOTH,expand=True) 

scrollbar=Scrollbar(area2) 
scrollbar.pack(side='right',fill=Y) 

scrollcanvas=Canvas(area2,height=1500,yscrollcommand=scrollbar.set) 
scrollcanvas.pack(side='left',fill=BOTH,expand=True) 

scrollcanvasframe=Frame(scrollcanvas) 
scrollcanvasframe.pack(side='top',fill=BOTH,expand=False) 

v2=IntVar() 
Label(scrollcanvasframe,textvariable=v2,bg="#FAFAFA").pack(side="top") 

canvas2=Canvas(scrollcanvasframe,width=800,height=566,bg='white') 
canvas2.pack(side="top") 
canvas3=Canvas(scrollcanvasframe,width=800,height=566,bg='grey') 
canvas3.pack(side="top") 

scrollbar.config(command=scrollcanvas.yview) 
scrollcanvas.config(yscrollcommand=scrollbar.set,scrollregion=(0,0,1000,1500)) 

나는 캔버스가가에 위치 프레임에 맞게 확장하기 때문에 문제가 마지막에 추가 된 scrollregion 함께 할 수있는 뭔가가있을 것 같아요.

나는 다양한 게시물을보고 시도

여기에 아무것도 도움이 될 것 같습니다.

+0

"작동하지 않음"과 "효과가 없습니다"는 의미는 무엇입니까? –

+0

스크롤바가 나타나서 막대를 위아래로 드래그 할 수 있지만 캔버스에는 영향을주지 않습니다. – Veitch

+0

정말로 위젯을 수정하기 위해 스크롤 바를 묶었습니까? 캔버스가 아닌 프레임 (area2)에 바인딩 한 것처럼 보입니다. – Lafexlos

답변

2

다양한 다른 위젯이 포함 된 프레임을 캔버스에 포함하여 스크롤 할 수 있습니다. 그러나 scrollcanvasframe을 작성한 후에는 함께 올바르지 않습니다. 캔버스는 그 자체로 기하학 관리자이며 다른 캔버스를 관리하는 올바른 방법은 create_window을 사용하는 것입니다. 도시 된 바와 같이

이때

상기 scrollcanvasframe.pack 호를 제거하고 교체 :

#scrollcanvasframe.pack(side='top',fill=BOTH,expand=False) 
scrollcanvas.create_window((5, 5), window=scrollcanvasframe, anchor=NW) 

이 위치 5,5에 캔버스 프레임 위젯위한 장소 홀더를 만들고 왼쪽 상단에 앵커 설정 객체 (기본적으로 중심)입니다. 이제 위젯이 캔버스에 의해 관리되고 다른 요소와 함께 스크롤됩니다. 당신은 거기에 직사각형이나 선을 추가하여 스크롤을 볼 수 있습니다 이것을 테스트 할 수 있습니다.

scrollcanvasframe에 포장 한 다른 위젯은 정상입니다. 그들은 프레임에 의해 관리되고 있습니다.

관련 문제