如何定义Tkinter画布滚动方法what
和xview(SCROLL, step, what)
中的'单元'(yview(SCROLL, step, what)
)?是以像素定义的吗?是否可以更改它(例如,对于较慢的滚动)?
有关更好的背景信息,请参阅代码here。
提前致谢。
答案 0 :(得分:4)
对于较慢的滚动,你可以使用xscrollincrement&画布的yscrollincrement选项:
from Tkinter import *
root = Tk()
c = Canvas(root, scrollregion=(0,0,500,500), height=200, width=200)
s = Scrollbar(root, command=c.yview)
c.pack(side=LEFT)
s.pack(side=RIGHT, fill=Y)
c.configure(yscrollcommand=s.set)
c.configure(yscrollincrement='2')
##yscrollincrement - increment for vertical scrolling, in pixels,
##millimeters '2m', centimeters '2c', or inches '2i'
c.create_rectangle(10,10,100,100)
c.create_rectangle(10,200,100,300)
def rollWheel(event):
direction = 0
if event.num == 5 or event.delta == -120:
direction = 1
if event.num == 4 or event.delta == 120:
direction = -1
event.widget.yview_scroll(direction, UNITS)
c.bind('<MouseWheel>', lambda event: rollWheel(event))
c.bind('<Button-4>', lambda event: rollWheel(event))
c.bind('<Button-5>', lambda event: rollWheel(event))
c.focus_set()
root.mainloop()
答案 1 :(得分:1)
查看-xview / -yview选项的文档,尤其是在yscrollincrement选项中。所以是的,你可以改变步长。
-yscrollincrement
以屏幕距离允许的任何常用形式指定垂直滚动的增量。如果此选项的值大于零,则窗口中的垂直视图将受到约束,以使窗口上边缘的画布y坐标始终为yScrollIncrement的偶数倍;此外,用于滚动的单元(例如,当选择滚动条的顶部和底部箭头时的视图变化)也将是yScrollIncrement。如果此选项的值小于或等于零,则垂直滚动不受约束。
和
yview滚动号是什么
此命令根据数字和内容向上或向下调整窗口中的视图。数字必须是整数。什么必须是单位或页面。如果是单位,则视图以yScrollIncrement选项为单位向上或向下调整(如果大于零),或者以窗口高度的十分之一为单位调整。如果页面是什么,则视图以窗口高度的十分之九为单位进行调整。如果数字为负数,则更高的信息变得可见;如果它是正数,则较低的信息变得可见。
来自canvas的Tk联机帮助页。