我在画框中有画布
photoFrame = Frame(centerFrame, width=250, height=190, bg="#EBEBEB")
photoFrame.grid(row=0, column=1, sticky="nsew")
photoCanvas = Canvas(photoFrame, bg="#EBEBEB")
photoCanvas.grid(row=0, column=0, sticky="nsew")
我尝试用这个
将滚动条放到我的画布上photoScroll = Scrollbar(photoFrame, orient=VERTICAL)
photoScroll.config(command=photoCanvas.yview)
photoCanvas.config(yscrollcommand=photoScroll.set)
photoScroll.grid(row=0, column=1, sticky="ns")
滚动条出现但已被禁用。你能帮帮我吗?
抱歉我的英语不好。
在for循环中,我添加了大量带有此代码的Image按钮
element = Button(photoCanvas, image = listPhotos[i], borderwidth=0, height = 200, width = 200, bg="#EBEBEB")
element.grid(row=rowPhoto, column=columnPhoto, padx=5, pady=5, sticky="nsew")
最后我有这个
root = Tk()
photoFrame = Frame(root, width=250, height=190, bg="#EBEBEB")
photoCanvas = Canvas(photoFrame, bg="#EBEBEB")
photoCanvas.grid(row=0, column=0, sticky="nsew")
for i in range(0, len(listPhotos), 1):
element = Button(photoCanvas, image = listPhotos[i], borderwidth=0, height = 200, width = 200, bg="#EBEBEB")
element.grid(row=rowPhoto, column=columnPhoto, padx=5, pady=5, sticky="nsew")
photoScroll=Scrollbar(photoFrame,orient=VERTICAL)
photoScroll.config(command=photoCanvas.yview)
photoCanvas.config(yscrollcommand=photoScroll.set)
photoScroll.grid(row=0, column=1, sticky="ns")
说你是否有一些问题
答案 0 :(得分:1)
滚动一组小部件的一种方法是将它们(grid
的{{1}})放在一个框架中,并将此框架放在画布中。
滚动工作的两个关键元素(除了连接滚动条到画布之外)是:
pack
将画面放在画布内,以便将其视为画布项目。canvas.create_window(x, y, window=frame)
更改框架大小(例如添加新小部件后)时,更新画布滚动区域。以下是对Python Tkinter scrollbar for frame问题代码的修改,但使用OP问题中的小部件名称和canvas.configure(scrollregion=canvas.bbox('all'))
代替grid
:
pack