首頁  >  文章  >  後端開發  >  wxpython中Textctrl回車事件無效的解決方法

wxpython中Textctrl回車事件無效的解決方法

WBOY
WBOY原創
2016-08-04 08:55:382305瀏覽

本文實例講述了wxpython中Textctrl回車事件無效的解決方法。分享給大家參考,具體如下:

今天使用wxptyhon的Textctrl控件開發客戶端時遇到了一個問題, 按照HTML表單的邏輯, 我們在Textctrl裡回車應該提交查詢, 但是wxpython的Textctrl很奇怪, 回車了居然是像Tab作用一樣跳轉到下一個控制.這樣的話,要完成查詢, 要嘛是滑鼠點擊按鈕, 要嘛需要按兩次或兩次以上.

Google了一下, 無答案, 但是得到了一些有用的資料:

TextCtrl支援的事件類型:

EVT_TEXT:文字因使用者的輸入或在程式中使用SetValue()而改變,都要產生該事件。

EVT_TEXT_ENTER:當使用者在一個wx.TE_PROCESS_ENTER樣式的文字控制項中按下了回車鍵時,產生該事件。

EVT_TEXT_URL:如果在Windows系統上,wx.TE_RICH或wx.TE_RICH2樣式被設定了,並且wx.TE_AUTO_URL樣式也被設定了,那麼當在文字內的URL上控制項發生了一個滑鼠事件時,該事件被觸發。

EVT_TEXT_MAXLEN:如果使用SetMaxLength()指定了該控制項的最大長度,那麼當使用者試圖輸入更長的字串時,該事件被觸發。

例如,這時會顯示一個警告訊息給使用者。

加上wxptyon Demos的例子, 終於悟出了解決方案:

1. 聲明實例時需要加上style屬性, 如:

wx.TextCtrl(self,style=wx.TE_PROCESS_ENTER)

2. 綁定TextCtrl的回車事件

一開始我使用了類似按鈕的綁定方式, 結果沒作用

複製程式碼 程式碼如下:
self.element_panel.searchInput.Bind(wx.EVT_TEXT_ENTER, self.onSearch)

正確的聲明方式應該是:

複製程式碼 程式碼如下:
self.Bind(wx.EVT_TEXT_ENTER, self.onSearch, self.element_panel.searchInput)

然後在Frame或Panel裡聲明對應的方法處理即可.

更多關於Python相關內容有興趣的讀者可查看本站專題:《Python資料結構與演算法教學》、《Python Socket程式設計技巧總結》、《Python函數使用技巧總結》、《Python字串操作技巧總結》 、《Python入門與進階經典教學》及《Python檔案與目錄操作技巧彙整》

希望本文所述對大家Python程式設計有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn