问题描述
[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 (将#修改为@)