2014-01-05 75 views
0

不知道還有什麼要調用「活動」。是否可以讓滾動條一旦點擊保持「活動」?換句話說,一旦我點擊滾動條,我希望能夠用鍵盤(左/右箭頭鍵)或鼠標移動滾動條。這可能嗎?如果是的話,我需要做些什麼來完成它?Python tkinter滾動條活動狀態

回答

1

從技術上講,它應該是可能的,通過給滾動條鍵盤焦點,然後添加一些自定義綁定。這是一件很不尋常的事情。由於滾動條是使用Windows和Mac上的本機窗口小部件繪製的,因此在這些平臺上可能不可能。

您可能想要做的事情是在應用程序整體或某些通常獲得焦點的小部件(如畫布或文本小部件)上設置一些綁定。你的綁定可以調用xviewyview命令,並給它一個參數來告訴它如何滾動,這正是滾動條所做的。

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>"事件。按鍵也由事件處理,並在可滾動對象上調用所需的滾動行爲。