wxpython:EVT_DATAVIEW_COLUMN_SORTED事件完全结束后如何调用函数?

问题描述

[Python v3.7.9 x64; wxPython v4.1.0; MS Windows 10 x64]

我正在使用wx.dataview.DataViewListCtrl小部件,并且启用了对列表控件中某一列的排序:

first_col = self.dv_list_control.Columns[0]  # gets first col of the DataViewListCtrl
first_col.SetSortable(sortable=True)  # allows sorting of first col

这个伟大的工程,选择了第一列的标题时,列表中的所有控制数据的排序,你期望的那样。

我需要检测何时对数据进行排序,因为在对数据进行排序之后,我需要立即检索存储在列表控件中的所有数据并对其进行处理。

当前,我具有绑定到dataview.EVT_DATAVIEW_COLUMN_SORTED事件的简单函数。不过,列表控件只有在返回函数之后才更新数据并对其进行排序-显然事件尚未完成。

我尝试使用Update()UpdateWindowUI()Refresh()CallAfter()Yield()SafeYield()等。我不是wxpython的专家,我已经筋疲力尽了。我不确定是否可以“检测事件何时完全完成处理并执行某些操作”,或者是否有其他方法可以在事件完成后立即执行功能?在某些情况下,这种情况似乎很常见。

一些示例代码链接或其他任何内容都将有所帮助-谢谢。

===== 编辑 =====
所以我搞砸了一些,我以前的问题可能不是唯一的问题。通过单击列标题进行排序,然后在列表控件中检索数据后,检索到的数据不再进行排序,而是按原始顺序进行。我想必须对与列表控件中每一行数据相关联的唯一ID进行排序。

有没有一种方法可以按照数据排序后的显示顺序准确检索数据?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)