【问题标题】:How to align all items in a column to center in QTableWidget如何将列中的所有项目对齐到 QTableWidget 的中心
【发布时间】:2019-03-09 16:58:20
【问题描述】:

我正在使用 PyQt5 和 PyCharm。如何将一列下的所有单元格对齐到中心?下面的代码似乎有效,但仅适用于一个单元格,即标题。我应该更改或添加什么?

item3 = QtWidgets.QTableWidgetItem('Item Name')
item3.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter)
self.tableWidget.setHorizontalHeaderItem(2, item3)

【问题讨论】:

    标签: python pyqt pyqt5 qtablewidget


    【解决方案1】:

    建立列对齐的一种简单方法是通过委托:

    import sys
    from PyQt5 import QtCore, QtWidgets
    
    
    class AlignDelegate(QtWidgets.QStyledItemDelegate):
        def initStyleOption(self, option, index):
            super(AlignDelegate, self).initStyleOption(option, index)
            option.displayAlignment = QtCore.Qt.AlignCenter
    
    
    class MainWindow(QtWidgets.QMainWindow):
        def __init__(self, parent=None):
            super(MainWindow, self).__init__(parent)
            self.tableWidget = QtWidgets.QTableWidget(15, 6)
            self.setCentralWidget(self.tableWidget)
    
            for i in range(self.tableWidget.rowCount()):
                for j in range(self.tableWidget.columnCount()):
                    it = QtWidgets.QTableWidgetItem("{}-{}".format(i, j))
                    self.tableWidget.setItem(i, j, it)
    
            delegate = AlignDelegate(self.tableWidget)
            self.tableWidget.setItemDelegateForColumn(2, delegate)
    
            # for all columns:
            # self.tableWidget.setItemDelegate(delegate)
    
    
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        w = MainWindow()
        w.resize(640, 480)
        w.show()
        sys.exit(app.exec_())
    

    【讨论】:

    • 我试过你的代码,它可以工作。但是我想知道是否有一种方法可以在不创建 AlignDelegate 的情况下如您的示例中那样。
    • @mak 我的解决方案有什么问题?如果没有正当理由,我不会花时间寻找其他解决方案。
    • 我想知道你是否知道是否有一种方法可以用一个线性伪代码编写,例如:self.tableWidget.setItemDelegateForColumn(2, QStyledItemDelegate(displayAlignment=QtCore.Qt.AlignCenter))。不过我明白你的意思。感谢您的回复。
    猜你喜欢
    • 2022-12-15
    • 2021-12-21
    • 1970-01-01
    • 2023-03-09
    • 2015-10-08
    • 2020-09-17
    • 1970-01-01
    相关资源
    最近更新 更多