我有這個可滾動的框架(實際上是在畫布內部的框架)。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