2024-06-23 02:27:51 发布
网友
我有一个列表视图,它显示了代表键、值对的字符串列表。这些字符串都有相同的字符长度,但是由于像素长度不同,它们在列表中显示的长度不同。看起来像这样:
someValue 1000.93 someOtherValue 98.7 oneMoreValue 11200000.00
有没有一种方法可以很好地格式化字符串,使其看起来像这样左右对齐:
我创建了这样的字符串:
s = '{:20}'.format(key) + '{:>20}'.format(val)
可以将QTreeView配置为与QListView类似的工作方式,这将允许多个列。然后每个列可以有自己的对齐设置(除其他外)。它还将在调整大小后保留对齐。在
QListView
基本实现如下:
import sys from PyQt5 import QtCore, QtGui, QtWidgets class ListView(QtWidgets.QTreeView): def __init__(self, *args, **kwargs): super(ListView, self).__init__(*args, **kwargs) self.setModel(QtGui.QStandardItemModel(self)) self.model().setColumnCount(2) self.setRootIsDecorated(False) self.setAllColumnsShowFocus(True) self.setSelectionBehavior( QtWidgets.QAbstractItemView.SelectRows) self.setHeaderHidden(True) self.header().setStretchLastSection(False) self.header().setSectionResizeMode( 0, QtWidgets.QHeaderView.Stretch) self.header().setSectionResizeMode( 1, QtWidgets.QHeaderView.ResizeToContents) def addItem(self, key, value): first = QtGui.QStandardItem(key) second = QtGui.QStandardItem(value) second.setTextAlignment(QtCore.Qt.AlignRight) self.model().appendRow([first, second]) class Window(QtWidgets.QWidget): def __init__(self): super(Window, self).__init__() self.view = ListView(self) for text in 'Aquamarine Red Green Purple Blue Yellow '.split(): self.view.addItem(text, str(16 ** len(text))) layout = QtWidgets.QVBoxLayout(self) layout.addWidget(self.view) if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) window = Window() window.setGeometry(600, 100, 300, 200) window.show() sys.exit(app.exec_())
可以将QTreeView配置为与
QListView
类似的工作方式,这将允许多个列。然后每个列可以有自己的对齐设置(除其他外)。它还将在调整大小后保留对齐。在基本实现如下:
相关问题 更多 >
编程相关推荐