在 wxpython listctrl 中显示整数

发布于 2024-08-06 20:24:49 字数 176 浏览 3 评论 0原文

我有一个包含五列的 wxPython ListCtrl。其中四个保存字符串,最后一个保存整数值。我一直将它们存储为字符串(即“4”、“17”等)。然而,现在我已经添加了 ColumnSorterMixin 来让我对列表中的特定列进行排序,我当然发现整数列是按词法排序而不是按数字排序。

有一个简单的方法可以解决这个问题吗?

I have a wxPython ListCtrl with five columns. Four of these hold strings, the last one has integer values. I have been storing these as strings (i.e. '4', '17', etc.). However, now that I have added a ColumnSorterMixin to let me sort specific columns in the list, I'm finding, of course, that the integer column is being sorted lexically rather than numerically.

Is there a simple way of fixing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

后eg是否自 2024-08-13 20:24:49

我认为进行自定义排序的最可靠方法是使用 SortItems() wx.ListCtrl 中的函数。请注意,您必须为每个项目提供项目数据(使用 SetItemData()),

只需提供您自己的回调,例如:

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

没有检查它,但这些内容应该适用于所有列,除非您有一列,其中一些值是表示整数的字符串,而另一些则不是。

I think that the most robust way of doing custom sort is to use SortItems() function in wx.ListCtrl. Note that you have to provide item data for each item (using SetItemData())

Just provide your own callback, say:

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

Didn't check it, but something along these lines should work for all columns, unless you have a column where some values are strings representing integers and some are not.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文