【问题标题】:How smart sort in QTablewidgetQTablewidget 中的智能排序
【发布时间】:2013-02-10 19:50:09
【问题描述】:

谢谢,我说的是西班牙语,请耐心等待:

我需要对可能的 QTableWidget 进行智能排序,但我不知道如何执行此操作,我在表中的数据是这样的:

例子:

Item1: “12 GB”
Item1: “34 KB”
Item1: “45 MB”
Item1: “12 bytes”
Item1: “12 MB”
Item1: “12.3 KB”
Item1: “23.4 KB”

【问题讨论】:

  • 列中的数据是一个文件夹的内容,hay需要进行智能排序,当用户点击列的de hader时,数据需要按大小排序

标签: python pyqt


【解决方案1】:

我建议您尝试更改您的输入,以便您实际获得以字节为单位的数量,而不是人类可读的值。

之后,您仍然可以以不同的方式显示它。如果这不是一个选项,那么您可以尝试这样的方法来解码它:

def convert(value):                                                                                                                                                               
    number, multiplier = value.split()                                                                                                                                            
    if multiplier == 'bytes':                                                                                                                                                     
        multiplier = 1                                                                                                                                                            
    elif multiplier == 'KB':                                                                                                                                                      
        multiplier = 2**10                                                                                                                                                        
    elif multiplier == 'MB':                                                                                                                                                      
        multiplier = 2**20                                                                                                                                                        
    elif multiplier == 'GB':                                                                                                                                                      
        multiplier = 2**30                                                                                                                                                        
    else:                                                                                                                                                                         
        raise RuntimeError('Unknown unit %r in %r' % (multiplier, value))                                                                                                         

    return float(number) * multiplier                                                                                                                                             

【讨论】:

猜你喜欢
  • 2022-11-24
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多