问题描述
我正在尝试制作只允许特定格式的 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 (将#修改为@)