Python Tkinter canvas.xview单元

时间:2011-07-28 18:33:47

标签: python scroll tkinter

如何定义Tkinter画布滚动方法whatxview(SCROLL, step, what)中的'单元'(yview(SCROLL, step, what))?是以像素定义的吗?是否可以更改它(例如,对于较慢的滚动)?

有关更好的背景信息,请参阅代码here

提前致谢。

2 个答案:

答案 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联机帮助页。