2010-08-24 16 views
1

我正在Python中編寫Tkinter GUI。它有一個條目用於搜索下面的結果列表框。 ListBox也有一個滾動條。如何在沒有將焦點從搜索字段切換的情況下使用鼠標和箭頭鍵滾動以在ListBox中工作? IE我希望用戶能夠鍵入搜索,滾動,並繼續打字,而不必在小部件之間來回切換。謝謝如何滾動非活動的Tkinter列表框?

+0

我想我可以只綁定鼠標和箭頭按鈕做手動滾動... HTTP:// WWW .daniweb.com/code/snippet217059.html解釋了鼠標滾動事件,並且箭頭鍵很容易。所以現在我只需要知道要綁定到什麼。 – Jeff 2010-08-24 19:17:50

回答

4

當用戶上下按下或使用上/下滾輪時,將綁定添加到調用列表框yview和/或see命令的條目窗口小部件。

例如,您可以爲方向鍵做這樣的事情:

class App(Tkinter.Tk): 
    def __init__(self): 
     Tkinter.Tk.__init__(self) 
     self.entry = Tkinter.Entry() 
     self.listbox = Tkinter.Listbox() 
     self.entry.pack(side="top", fill="x") 
     self.listbox.pack(side="top", fill="both", expand=True) 
     for i in range(100): 
      self.listbox.insert("end", "item %s" % i) 

     self.entry.bind("<Down>", self.OnEntryDown) 
     self.entry.bind("<Up>", self.OnEntryUp) 

    def OnEntryDown(self, event): 
     self.listbox.yview_scroll(1,"units") 

    def OnEntryUp(self, event): 
     self.listbox.yview_scroll(-1,"units") 
+0

這是有道理的。但是,我如何明確地控制它們?到目前爲止,我剛剛使用了mylistbox.config(yscrollcommand = myscrollbar.set)和myscrollbar.config(command = mylistbox.yview)。 – Jeff 2010-08-25 02:20:35

+0

@Jeff:我已經在我的答案中添加了一些示例代碼來解決您的問題。 – 2010-08-25 10:59:04

+0

謝謝!各種網站使它聽起來很複雜,但以您的例子來說,這非常簡單。 – Jeff 2010-08-28 18:30:04