如何捕获 wxPropertyGrid 中每次按键的事件
在 wxPython 中,我试图更新现有的 UI 以使用 wxPropertyGrid 而不是单个 UI 元素的数组。目前,底层对象模型已更新,并且每次按键后都会应用验证,我想对 PropertyGrid 执行相同的操作。
我遇到的问题是,似乎不存在像 wx.EVT_TEXT 这样的每次击键都会触发的 wxPropertyGridEvent,最接近的是 EVT_PG_CHANGED,但只有当您在网格中的行之间进行更改时才会触发。我可以通过将 wx.EVT_TEXT 绑定到 PropertyGrid 在一定程度上解决这个问题,但随后我无法使用 event.GetProperty() 来访问属性数据,因为该事件不是 PropertyGridEvent。
所以问题是我是否错过了一些东西以及是否有我可以使用的现有事件?如果没有关于我如何解决这个问题的任何想法?
In wxPython I'm trying to update an existing UI to use wxPropertyGrid instead of an array of individual UI elements. Currently the underlying object model is updated and validation is applied after each key press and I want to do the same with the PropertyGrid.
The problem I'm having is that there doesn't seem to exist a wxPropertyGridEvent which triggers on every key stroke like wx.EVT_TEXT, the closest is EVT_PG_CHANGED but that only triggers when you change between rows in the grid. I can get round this to an extent by binding wx.EVT_TEXT to the PropertyGrid but then I'm unable to use event.GetProperty() in order to access the property data as the event is not a PropertyGridEvent.
So the question is have I missed something and is there an existing event which I can use? Failing that any ideas on how I get around this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
事实证明,您可以通过直接绑定到文本 ctrl 来捕获 EVT_CHAR 事件。由于文本 ctrl 仅在选择属性时创建,但是在设置网格时不能执行此操作,而是必须在 EVT_PG_SELECTED 事件之后绑定它。
Turns out you can capture EVT_CHAR events by binding directly to the text ctrl. As the text ctrl is only created when the property is selected however you can't do this when setting up the grid, rather you have to bind it following a EVT_PG_SELECTED event.