我有这个可滚动的框架(实际上是在画布内部的框架)。Python tkinter绑定滚轮滚动条
import Tkinter as tk
class Scrollbarframe():
def __init__(self, parent,xsize,ysize,xcod,ycod):
def ScrollAll(event):
canvas1.configure(scrollregion=canvas1.bbox("all"),width=xsize,height=ysize,bg='white')
self.parent=parent
self.frame1=tk.Frame(parent,bg='white')
self.frame1.place(x=xcod,y=ycod)
canvas1=tk.Canvas(self.frame1)
self.frame2=tk.Frame(canvas1,bg='white',relief='groove',bd=1,width=1230,height=430)
scrollbar1=tk.Scrollbar(self.frame1,orient="vertical",command=canvas1.yview)
canvas1.configure(yscrollcommand=scrollbar1.set)
scrollbar1.pack(side="right",fill="y")
canvas1.pack(side="left")
canvas1.create_window((0,0),window=self.frame2,anchor='nw')
self.frame2.bind("<Configure>",ScrollAll)
我想将鼠标滚轮绑定到滚动条上,这样用户就可以向下滚动框架而不必使用滚动条上的箭头按钮。环顾四周后,我添加了一个绑定到我的canvas1
这样
self.frame1.bind("<MouseWheel>", self.OnMouseWheel)
这是函数:
def OnMouseWheel(self,event):
self.scrollbar1.yview("scroll",event.delta,"units")
return "break"
但是当我使用鼠标滚轮滚动条不会移动。谁能帮我这个?我想要的只是当用户使用鼠标滚轮(在框架区域/滚动条上)时,画布应自动向上或向下滚动。
像我这样的初学者的完美答案。谢谢 –
我试图使用这个(linux在这里),但无法使其工作,直到我注意到 - 我想知道为什么 - event.delta总是零。通过简单地调用yview_scroll(direction,“units”)解决它 – alessandro
@Bryan Oakley - 如果应用程序中只有一个滚动画布,上述工作正常。但是,如果有两个或更多,您如何限制滚动到一个或另一个? – JDM