如何解决wxPython:TextCtrl 防止替换 EVT_CHAR 上的选定文本
我正在尝试制作只允许特定格式的 TextCtrl。我正在使用 EVT_CHAR 并且一切正常,直到用户开始选择文本。在某些情况下,我想保留原始文本和选择,但是当我的回调被调用时,选择似乎已经消失了。
import wx
class MyTextCtrl(wx.TextCtrl):
def __init__(self,parent,ident,value,*args,**kwargs):
super().__init__(parent,str(value),**kwargs)
self.SetMaxLength(18)
self.Bind(wx.EVT_CHAR,self.on_char)
def on_char(self,e):
print('current value:',self.GetValue(),',selected: ',self.GetStringSelection())
e.Skip()
class MyDialog(wx.Dialog):
def __init__(self,parent):
wx.Dialog.__init__(
self,-1,'Select Size',size=(200,135))
MyTextCtrl(self,'01234')
wx.Button(self,wx.ID_OK,'OK',pos=(100,75)).SetDefault()
if __name__ == "__main__":
app = wx.App(0)
dlg = MyDialog(None)
dlg.ShowModal()
dlg.Destroy()
当我选择“123”并按 DELETE 时,它会打印:
当前值:01234,选中:123
正如预期的那样,但如果我选择“123”并按“a”,它会打印:
当前值:04,选中:
这真的是它应该工作的方式还是一个错误?如果是前者:我将如何取回之前的选择?
我使用的是具有以下 wxpython 版本的 Linux 计算机:
4.1.1 gtk3(凤凰)wxWidgets 3.1.5
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。