5
A
回答
3
IntCtrl
,Masked Edit Control
和NumCtrl
都是設計來完成這一工作的,具有不同的控制級別。檢查「更多Windows /控件」下的wx演示,瞭解它們的工作原理。 (或者,如果你真的很希望直接用原始的TextCtrl來做這件事,我想你會想捕捉EVT_CHAR事件,測試這些字符,並且調用evt.Skip(),如果它是一個允許的字符。)
4
我不得不做類似的事情,檢查字母數字代碼。在EVT_CHAR尖端是正確的事情:
class TestPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1)
self.entry = wx.TextCtrl(self, -1)
self.entry.Bind(wx.EVT_CHAR, self.handle_keypress)
def handle_keypress(self, event):
keycode = event.GetKeyCode()
if keycode < 255:
# valid ASCII
if chr(keycode).isalnum():
# Valid alphanumeric character
event.Skip()
1
你可以試試IntCtrl
,EVT_CHAR
,或實施新的/現有的驗證器(如IntValidator)。驗證器可用於驗證字段(在嘗試驗證對話框/面板上的多個事件時很有用),它們也可以與EVT_CHAR一起用於限制字段中的輸入。
-1
請在wxpython演示中檢查「Validator.py」腳本。它正是你所需要的
0
正如其他答案說明,可以用EVT_CHAR
處理程序來完成此操作。您需要撥打event.Skip()
查看您想要通過的字符,而不是將其稱爲您要阻止的字符。一個細微之處在於,您可能還想撥打event.Skip()
作爲製表符;按下標籤會觸發EVT_CHAR
事件,如果您不呼叫event.Skip()
,您將有效地禁用TextCtrl
之間的標籤遍歷。
下面是顯示兩個TextCtrl
s表示接受整數或小數,有工作標籤遍歷一個最小的應用程序:
import wx
app = wx.App()
frame = wx.Frame(None, -1, 'simple.py')
panel = wx.Panel(frame)
text_ctrl_1 = wx.TextCtrl(panel, value='123')
text_ctrl_2 = wx.TextCtrl(panel, value='456', pos=(0, 30))
def block_non_numbers(event):
key_code = event.GetKeyCode()
# Allow ASCII numerics
if ord('0') <= key_code <= ord('9'):
event.Skip()
return
# Allow decimal points
if key_code == ord('.'):
event.Skip()
return
# Allow tabs, for tab navigation between TextCtrls
if key_code == ord('\t'):
event.Skip()
return
# Block everything else
return
text_ctrl_1.Bind(wx.EVT_CHAR, block_non_numbers)
text_ctrl_2.Bind(wx.EVT_CHAR, block_non_numbers)
frame.Show()
app.MainLoop()
相關問題
- 1. 是否可以設置EditText只接受android中的unicode字符?
- 2. 是否有可能限制泛型參數只接受可空類型?
- 3. C#泛型 - 是否可以限制一個方法只接受DataTable和String?
- 4. 語言可以接受無限數字
- 5. 是否可以限制StreamField接受兩個塊?
- 6. 如何接受來自wxpython的textctrl的值
- 7. wxPython的TextCtrl和無限循環問題
- 8. wxPython textCtrl silent AppendText
- 9. 如何限制Rust中的T只接受數字類型?
- 10. npm包是否可以接受參數
- 11. 以字符數設置wxPython TextCtrl的寬度
- 12. wxPython中添加行TextCtrl
- 13. 是否可以限制Bookmarklet?
- 14. Cakephp:是否可以限制數據庫連接的數量?
- 15. 是否可以強制模板函數只接受某種數字類型的參數?
- 16. 是否有可能只接受整數列表的Ocaml函數?
- 17. 在oracle中只接受使用accept的限制字符
- 18. 註釋是否可以限制java中類字段的字符?
- 19. 如何限制texbox只接受數字和退格?
- 20. 限制uibDatepicker彈出接受只有數字和' - '
- 21. 限制文本框只接受10位數字
- 22. 我們可以在wxPython的ObjectListView上嵌入ComboBox或TextCtrl嗎?
- 23. [自動釋放]是否可以接受?
- 24. 這個用法是否可以接受?
- 25. Firebase是否可以接受SOAP消息
- 26. 整體事件是否可以接受?
- 27. 限制列只接受2個值
- 28. Prolog中可接受的謂詞是否可接受?
- 29. 如何知道小部件是否只接受數字字符
- 30. 這3種複製ArrayList的方式是否可以接受?