2017-05-02 5 views
0

저는 tkinter와 python3을 처음 사용합니다. 나는 Toplevel()의 자식 인 캔버스의 자식 인 프레임 용 스크롤 막대를 만드는 작업을했습니다. 스크롤바 버튼은 잘 작동하지만 바/상자 자체는 위에서 아래로 뻗어 움직일 수 없습니다. 또한, 스크롤 버튼을 사용하여 사용자는 내용을 넘어서 스크롤 할 수 있습니다 (볼 내용이없는 곳). 다음은 코드입니다.approriately 스크롤바에 어떻게 맞습니까?

#! /usr/bin/env python3 

from tkinter import * 
from filegroups import typeGroups 

app = Tk() 

types_window = Toplevel(app) 
types_window.wm_title('Types') 

yscrollbar = Scrollbar(types_window, orient=VERTICAL) 
yscrollbar.grid(row=0, column=1, sticky=N+S) 

canvas = Canvas(types_window, 
       width = 300, 
       height = 500, 
       yscrollcommand=yscrollbar.set) 

canvas.grid(row=0,column=0) 
canvas.config(scrollregion=canvas.bbox("all")) 
yscrollbar.config(command=canvas.yview) 

frame = Frame(canvas) 

canvas.create_window(0,0,anchor=NW,window=frame) 

for key in sorted(typeGroups.keys()): 
    options_frame = LabelFrame(frame, text=key) 
    options_frame.grid(padx=5, pady=10) 
    for item in typeGroups[key]: 
     item_button = Checkbutton(options_frame, 
            text=item) 
     item_button.grid() 

app.mainloop() 

답변

0

당신은 app.mainloop() 전에이 두 줄을 추가하여 라벨 함께 프레임을 작성 후 캔버스 scrollregion를 업데이트해야합니다 update_idletasks에 대한 호출이 캔버스 내용이 업데이트 될 수 있도록 필요한

canvas.update_idletasks() 
canvas.config(scrollregion=canvas.bbox("all")) 
우리가 경계 상자를 요구하기 전에.

관련 문제