wxPython事件的顺序给我带来了问题
我的GUI由左侧的wxPython事件的顺序给我带来了问题,python,wxpython,wxwidgets,Python,Wxpython,Wxwidgets,我的GUI由左侧的wx.ListCtrl和右侧的一组wx.TextCtrls组成,用于编辑所选对象 我的实施策略是: 在文本框的wx.EVT\u KILL\u FOCUS上,更新当前选定对象的相关属性 列表中的代码> Wx.EvtListListItMyEddieDe< ,要么隐藏文本框,要么将它们空格并禁用它们(当用户单击列表控件中的空白时需要的) 在列表的wx.EVT\u list\u ITEM\u SELECTED上,用所选对象属性的值填充文本控件 使用此设置,有3个用例,其中2个可用
wx.ListCtrl
和右侧的一组wx.TextCtrl
s组成,用于编辑所选对象
我的实施策略是:
- 在文本框的
上,更新当前选定对象的相关属性wx.EVT\u KILL\u FOCUS
- 列表中的代码> Wx.EvtListListItMyEddieDe< <代码>,要么隐藏文本框,要么将它们空格并禁用它们(当用户单击列表控件中的空白时需要的)
- 在列表的
上,用所选对象属性的值填充文本控件wx.EVT\u list\u ITEM\u SELECTED
wx.EVT\u KILL\u焦点
s,并更新属性wx.EVT\u列表\u项目
,wx.EVT\u列表\u项目
,最后是wx.EVT\u KILL\u焦点
。您可能会看到问题:在调用更新属性的方法时,已经选择了一个新对象,文本框中已经填充了新值所以我很清楚问题是什么,但我不能想出一个好的、干净的方法来解决它。理想情况下,我希望能够更改wx事件的顺序(将
wx.EVT\u KILL\u FOCUS
放在前面),但我怀疑这是否可能。我还缺少其他明显的解决方案吗?wx.EVT\u LIST\u ITEM\u取消选择仅当用户更改列表框中的选定对象时才会激发。这与在文本框上失去焦点的目的相同。也从该事件调用更新例程。要从文本框中跳过后续的wx.EVT_KILL_焦点,请在更新属性后在父对象中设置“isDirty”属性。您可以随时检查isDirty值以确认是否有要提交的更改。当您填充新选择的文本框时,必须重置此属性,然后在其他文本框事件期间设置此属性。在我看来,您正在尝试从头开始重新实现wxListbook的功能。看起来需要做很多工作,也许你可以使用wxListbook
做你需要的事
好主意,我想这会很好用。我现在正在做其他的事情,但是当我回到这个问题上来时,我会尝试一下。干杯嗯,这也是一个很好的观点。当我回到这个问题时,我需要考虑其他一些事情。事实证明wxListBook对我没有好处,因为“底层的wxListCtrl在一列报表视图中显示页面标签”。我需要多个栏目。