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. 是否有可能限制泛型参数只接受可空类型?
- 2. 语言可以接受无限数字
- 3. 是否可以限制StreamField接受两个块?
- 4. 如何接受来自wxpython的textctrl的值
- 5. wxPython的TextCtrl和无限循环问题
- 6. wxPython textCtrl silent AppendText
- 7. 如何限制Rust中的T只接受数字类型?
- 8. npm包是否可以接受参数
- 9. 以字符数设置wxPython TextCtrl的宽度
- 10. wxPython中添加行TextCtrl
- 11. Cakephp:是否可以限制数据库连接的数量?
- 12. 是否可以限制Bookmarklet?
- 13. 是否可以强制模板函数只接受某种数字类型的参数?
- 14. 是否有可能只接受整数列表的Ocaml函数?
- 15. 在oracle中只接受使用accept的限制字符
- 16. 如何限制texbox只接受数字和退格?
- 17. 限制uibDatepicker弹出接受只有数字和' - '
- 18. 限制文本框只接受10位数字
- 19. 注释是否可以限制java中类字段的字符?
- 20. [自动释放]是否可以接受?
- 21. Prolog中可接受的谓词是否可接受?
- 22. 这3种复制ArrayList的方式是否可以接受?
- 23. wxpython textctrl不写时绑定
- 24. 如何限制ExtJs Textfield只接受使用maskRe的数字。 (应接受正数,负数,整数和小数)
- 25. wxPython:如何搜索TextCtrl中的文本?
- 26. 是否可以限制Parallel.ForEach的内核?
- 27. 我不能限制我的程序只接受二进制数字
- 28. 是否可以定义接受文字的Web Api路由?
- 29. Cassandra数据库行大小是否受可用内存限制?
- 30. 是否可以将数字限制在一定范围内