【发布时间】:2021-06-20 07:31:27
【问题描述】:
我使用 QTreeWidget 的 UI 很小,它包含 4 列 ['Folder'、'FileName'、'Size'、'Owner'] 现在,当我单击“大小”列进行排序时,它没有按(B、Kib 和 Mib)的正确顺序排序,因为“大小”的值在字符串中它只对第一个数字进行排序并混合所有字节、Kib & Mib.
如果列同时包含 int 和 string 类型,谁能指导以正确顺序进行排序的正确方法是什么?
from PyQt5.QtWidgets import *
class TestUI(QWidget):
def __init__(self):
super(TestUI, self).__init__(parent=None)
self.setGeometry(10, 10, 700, 350)
self.setWindowTitle('Runner up !')
self.layout = QVBoxLayout()
self.setLayout(self.layout)
self.tree_widget = QtGui.QTreeWidget()
self.tree_widget.setSelectionMode(QtGui.QTreeWidget.ExtendedSelection)
headers = ['Folder', 'Filepath', 'Size', 'Owner']
self.tree_widget.setHeaderLabels(headers)
self.tree_widget.setSortingEnabled(True)
metadata = {'Desktop': [('/u/donald/Desktop/file_test.txt', '2 MiB', 'Donald'),
('/u/donald/Desktop/file_test_01.txt', '20 KiB', 'Donald')]}
for folder, folderdata in metadata:
top_item = QtGui.QTreeWidgetItem(self.tree_widget,
[folder, '', '', ''])
for data in folderdata:
filepath, size, owner = data[0], data[1], data[2]
child_item = QtGui.QTreeWidgetItem(top_item, ['', filepath, size, owner])
if __name__ == '__main__':
app = QApplication(sys.argv)
WIN = TestUI()
WIN.show()
app.exec_()
【问题讨论】:
标签: python python-2.7 pyqt4 qtreewidget