在QTablewidget中如何智能排序

时间:2013-02-25 15:51:48

标签: python pyqt

谢谢,我说西班牙语,请务必:

我需要对QTableWidget进行智能排序,我对如何做到这一点没有任何想法,表中的数据是这样的:

示例:

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

1 个答案:

答案 0 :(得分:0)

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

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

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