このスクロール可能なフレーム(実際にはキャンバス内のフレーム)があります。
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"
しかし、マウスホイールを使用するとスクロールバーが動きません。誰でもこれで私を助けることができますか?私が望むのは、ユーザーがマウスホイールを使用するとき(フレーム領域内/スクロールバー上)、キャンバスが自動的に上下にスクロールすることだけです。