PyQt 3.3.6:如何对齐表格中的文本?

时间:2015-06-09 15:12:30

标签: python pyqt

我有一个表格,我在其中将数字(作为字符串)放在一列中。由于某种原因,似乎具有2个或更多个周期(即5.5.5)的数字将在单元格的左侧对齐,而具有较少周期的数字(即55.5)将在单元格的右侧对齐。有谁知道如何改变这个?

2 个答案:

答案 0 :(得分:0)

据我所知,用于千位分隔符和小数点的字符在区域设置之间可能会有所不同,但当然没有区域设置可以将5.5.5理解为数字?鉴于此,Qt想将其视为普通文本并不奇怪。

但无论如何,QTableItem的文档建议您可以通过重新实现alignment函数来解决这个问题:

class TableItem(QTableItem):
    def alignment(self):
        if is_pseudo_number(self.text()):
            return Qt.AlignRight
        return QTableItem.alignment(self)
...

table.setItem(row, column, TableItem('5.5.5'))

is_pseudo_number()的实施留给读者练习......

(PS:因为你使用的是PyQt3,上面的代码是完全未经测试的)

答案 1 :(得分:0)

我有类似的问题。我的解决方案略有不同。 将每个项目填入表格时,请检查它是否符合“5.5.5”格式,并将项目设置为右对齐。

cell = QTableWidgetItem(value)
tableWidget.setItem(row, col, cell)
# check the value matches your requirement, via regex or as below
check = value.replace('.', '')
if check.isdigit():
    tableWidget.item(row, col).setTextAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignVCenter)