2017-05-23 3 views
2

100 개의 항목 위젯을 만들려고합니다. 세로 스크롤 막대를 사용하여 스크롤해야합니다. 프레임에는 스크롤 막대 옵션이 없으므로 캔버스를 사용했습니다. 하지만 항목 위젯을 추가 할 때 스크롤 막대가 작동하지 않습니다. 누군가 제가 실수 한 것을 도와 줄 수 있습니까?파이썬 tkinter에서 스크롤 막대가 작동하지 않습니다.

MY CODE :

from tkinter import * 
root=Tk() 
frame=Frame(root,width=300,height=300) 
frame.grid(row=0,column=0) 
canvas=Canvas(frame,width=300,height=300,scrollregion=(0,0,500,500)) 

for _ in range(100): 
    Entry(canvas).pack() 

vbar=Scrollbar(frame,orient=VERTICAL) 
vbar.pack(side=RIGHT,fill=Y) 
vbar.config(command=canvas.yview) 

canvas.config(yscrollcommand=vbar.set) 
canvas.pack(side=LEFT,expand=True,fill=BOTH) 

root.mainloop() 

답변

2

을 캔버스는 .create_window() 통해 추가 된 자식 위젯을 스크롤 할 수 있습니다. .pack()을 통해 추가 된 하위 위젯은 기본적으로 Canvas 위에 놓여 있으며 제어되지 않습니다.

.create_window()은 대략 .place() 지오메트리 관리자와 비슷합니다. 좌표는 전적으로 사용자에게 달려 있으므로 입력 글꼴 위젯이 얼마나 멀리 떨어져 있는지 정확히 알고 있어야합니다. 정확히 일치하는 글꼴에 따라 다릅니다. 각 시스템에서 사용됩니다. 캔바스에 하나의 프레임을 직접 추가 한 다음 엔트리 위젯을 그 안에 모두 팩하는 것이 더 효과적 일 것입니다. 스크롤을 허용하면서 자동 크기 조정의 이점을 제공합니다.

+0

나는 그것을 지금 얻었다. 나를 지적 해 주셔서 고마워요. 나는'create_window()'를 놓쳤다. – Sundararajan