Python tkinter滚动条活动状态

时间:2014-01-05 22:13:15

标签: python tkinter

不确定还有什么叫“主动”。滚动条是否可以一旦点击保持“活动”?再一次,当我点击滚动条时,我希望能够使用键盘(左/右箭头键)或鼠标移动滚动条。这可能吗?如果是这样,我该怎么做才能完成它?

2 个答案:

答案 0 :(得分:1)

从技术上讲,应该可以通过给滚动条提供键盘焦点,然后添加一些自定义绑定。这是一件相当不寻常的事情。由于滚动条是在Windows和Mac上使用本机小部件绘制的,因此在这些平台上可能无法实现。

您可能想要做的是在整个应用程序上设置一些绑定,或者在通常获得焦点的某种窗口小部件上设置一些绑定,例如画布或文本窗口小部件。你的绑定可以调用xviewyview命令并给它参数来告诉它如何滚动,这正是滚动条的作用。

答案 1 :(得分:1)

你可以这样做,例如:

from Tkinter import *


root = Tk()
scrollbar = Scrollbar(root, takefocus = True)
scrollbar.pack( side = RIGHT, fill=Y )

mylist = Listbox(root, yscrollcommand = scrollbar.set )

scrollbar.bind("<Down>", lambda event: mylist.yview_scroll(1, "units"))
scrollbar.bind("<Up>", lambda event: mylist.yview_scroll(-1, "units"))
scrollbar.bind("<Button-1>", lambda event: scrollbar.focus_set())

for line in range(100):
   mylist.insert(END, "This is line number " + str(line))

mylist.pack( side = LEFT, fill = BOTH )
scrollbar.config( command = mylist.yview )

mainloop()

takefocus标志允许滚动条保持焦点。焦点设置为"<Button-1>"事件。按键也由事件处理,并在可滚动对象上调用所需的滚动行为。