【发布时间】:2021-05-29 21:43:49
【问题描述】:
如何在此代码中放置图像以便它可以滚动?
此代码来自此处的答案:tkinter: using scrollbars on a canvas
from tkinter import *
root=Tk()
frame=Frame(root,width=300,height=300)
frame.pack(expand=True, fill=BOTH) #.grid(row=0,column=0)
canvas=Canvas(frame,bg='#FFFFFF',width=300,height=300,scrollregion=(0,0,500,500))
hbar=Scrollbar(frame,orient=HORIZONTAL)
hbar.pack(side=BOTTOM,fill=X)
hbar.config(command=canvas.xview)
vbar=Scrollbar(frame,orient=VERTICAL)
vbar.pack(side=RIGHT,fill=Y)
vbar.config(command=canvas.yview)
canvas.config(width=300,height=300)
canvas.config(xscrollcommand=hbar.set, yscrollcommand=vbar.set)
canvas.pack(side=LEFT,expand=True,fill=BOTH)
root.mainloop()
我尝试了画布上的图像,画布内另一个框架内的图像,以及现有框架内的图像,我在嵌套框架内和现有画布上放置了一个标签。滚动条不适用于大于 300x300 的图像,但滚动条会随着仅文本的标签移动,但标签不会移动。我使用了L_text.place(x=20,y=90) 和L_text.pack(),结果相同。
如果不修改答案中的代码,只有当鼠标指针悬停在垂直滚动条上时,我才会移动滚动条,而鼠标滚轮会移动它们,但画布/框架区域上的鼠标不会移动滚动条。
Ubuntu 20.04 python 3.8.5
【问题讨论】:
-
您可以将图像直接添加到画布上,它会滚动。我建议你尝试一下,如果你不能让它工作,你可以向我们展示你尝试过的代码,我们可以帮助修复它。
-
优秀。我使用了
canvas.create_image,它奏效了。我现在必须调整垂直滚动条的运动。但是,鼠标滚轮会滚动它,但在将鼠标悬停在图像上时仍然不会。我会用代码发布一个“答案”。谢谢!
标签: python image tkinter canvas scrollbar