2010-11-11 52 views
2

在我的應用程序中,我想要一個搜索框,可能類似wx.SearchCtrl提供的搜索框,其中包含搜索按鈕和取消按鈕。我也想知道當用戶按向上向下,這樣我就可以瀏覽搜索結果。當我做一個演示與wx.TextCtrl我可以綁定事件這樣wxPython:如何在SearchCtrl上偵聽EVT_KEY_DOWN?

self.textbox = wx.TextCtrl(self) 
self.textbox.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.textbox) 

但只要我改變textboxwx.SearchCtrl我不能再趕上事件。我可以使用wx.SearchCtrl進行綁定嗎?還是必須執行我的textbox才能看起來像?

如果有問題,我正在開發Ubuntu(Gnome),並且該應用程序在Linux和Windows上都能正常工作。

+0

如何顯示搜索結果?你正在使用SearchCtrl菜單還是你想使用別的東西?你使用的是什麼版本的wxpython? – Velociraptors 2010-11-11 17:15:45

+0

搜索結果顯示在單獨的列表框中。我使用Ubuntu存儲庫中包含的wxpython。現在無法檢查版本,但我會盡快更新。 – phunehehe 2010-11-11 17:43:48

+0

確切版本是2.8.10.1 – phunehehe 2010-11-12 00:42:31

回答

0

使用不同的事件,as per the docs

self.textbox = wx.SearchCtrl(self, style=wx.TE_PROCESS_ENTER) 
self.Bind(wx.EVT_TEXT, self.OnKeyDown, self.textbox) 
+0

他們太不同了。 TE_PROCESS_ENTER只捕獲Enter,EVT_TEXT只捕獲字符輸入。我想趕上:( – phunehehe 2010-11-11 16:47:53

+0

)您可以獲取用戶在事件處理程序中按下的鍵,並在與上鍵匹配時執行任何操作。 – 2010-11-11 17:12:32

+0

不,當我按下Up鍵時,綁定方法根本不會被調用或向下(或向左或向右) – phunehehe 2010-11-11 17:39:40

1

一種解決方法似乎是使用EVT_KEY_UP,即

self.textbox.Bind(wx.EVT_KEY_UP, self.OnKeyUp, self.textbox) 

然而,這樣的按鍵是不可重複的(你必須釋放鍵,以便將事件被解僱)。我仍然在尋找更好的方法。

+0

你應該爲wxPython提交一個錯誤報告來記錄這個問題 – Velociraptors 2010-11-17 18:42:28