|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在网上找个排序的代码,
排序是正常的
但是有个问题,
就是序号的数字是字符
就无法按照数字的大小进行排序
而是按数字的第1位进行排序:
如:14,15,20,25,26,4,41,5,51
想了半天也没有发现问题在哪里???
请教高手,谢谢!!!
代码如下:
def treeview_sort_column(tv, col, reverse): # Treeview、列名、排列方式
l = [(tv.set(k, col), k) for k in tv.get_children('')]
#print(tv.get_children(''))
l.sort(reverse=reverse) # 排序方式
# rearrange items in sorted positions
for index, (val, k) in enumerate(l): # 根据排序后索引移动
tv.move(k, '', index)
# print(k)
tv.heading(col, command=lambda: treeview_sort_column(tv, col, not reverse)) # 重写标题,使之成为再点倒序的标题
那是因为字符串比较大小就是从第一个字符开始比较unicode码值,只要能比出个结果就不往后继续比较了
你把整数字符串转成整数类型就好
def treeview_sort_column(tv, col, reverse): # Treeview、列名、排列方式
l = [(tv.set(k, col), int(k)) for k in tv.get_children('')]
#print(tv.get_children(''))
l.sort(reverse=True) # 排序方式
# rearrange items in sorted positions
for index, (val, k) in enumerate(l): # 根据排序后索引移动
tv.move(k, '', index)
# print(k)
tv.heading(col, command=lambda: treeview_sort_column(tv, col, not reverse)) # 重写标题,使之成为再点倒序的标题
|
|