在wxpython的listctrl中显示整数

2 投票
1 回答
850 浏览
提问于 2025-04-15 14:47

我有一个wxPython的ListCtrl,里面有五列。前四列是字符串,最后一列是整数值。我之前把这些整数当作字符串存储,比如'4'、'17'等等。不过,现在我加了一个ColumnSorterMixin,让我可以对列表中的特定列进行排序,结果发现整数列是按字典顺序排序的,而不是按数字大小排序。

有没有简单的方法可以解决这个问题呢?

1 个回答

2

我觉得自定义排序最可靠的方法是使用 wx.ListCtrl 中的 SortItems() 函数。注意,你需要为每个项目提供数据(使用 SetItemData())。

只需提供你自己的回调函数,比如:

def sortColumn(item1, item2):
    try: 
        i1 = int(item1)
        i2 = int(item2)
    except ValueError:
        return cmp(item1, item2)
    else:
        return cmp(i1, i2)

我没有实际测试过,但大致上这样的代码应该适用于所有列,除非你有一列的值有些是表示整数的字符串,有些则不是。

撰写回答