有客自远方来52 2024-02-13 18:43 采纳率: 15.3%
浏览 5
已结题

怎样使python获取到的数据在qt表格中显示居中(开发工具-pycharm)

这是代码和显示数据结果

def initTable(self):
    """
    根据条件初始化表格
    :return:
    """
    bookName = self.s_bookNameInput.text()
    authorName = self.s_authorInput.text()
    TID = self.s_ComboBox.currentData()
    s_book = Book(bookName, authorName, TID)
    result = bookDao.list(s_book)
    row = 0
    if result:
        row = len(result)
    self.bookListTable.setColumnCount(7)
    self.bookListTable.setRowCount(row)
    self.bookListTable.verticalHeader().setVisible(False)  # 隐藏垂直标题 序号
    self.bookListTable.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)  # 禁止编辑单元格
    self.bookListTable.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
    self.bookListTable.setHorizontalHeaderLabels(
        ['编号', '图书名称', '图书作者', '作者年龄', '作者性别', '图书价格', '图书类别', '图书简介'])
    self.bookListTable.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch)  # 列头自适应
    self.bookListTable.setSelectionBehavior(
        QAbstractItemView.SelectionBehavior.SelectRows)  # 设置选择行为,以行为单位

    for i in range(row):
        for j in range(7):
            data = QTableWidgetItem(str(result[i][j]))
            self.bookListTable.setItem(i, j, data)


img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-02-13 18:44
    关注

    引自免费微信小程序:皆我百晓生

    为了实现Python获取的数据在Qt表格(QTableWidget)中显示居中,您需要对已插入的每个 QTableWidgetItem 设置其对齐方式。请将以下代码添加到您的 for 循环内部,以便为每一项数据设置居中对齐:

    for i in range(row):
        for j in range(7):
            data = QTableWidgetItem(str(result[i][j]))
            # 设置单元格内容居中对齐
            data.setTextAlignment(Qt.AlignCenter)
            self.bookListTable.setItem(i, j, data)
    

    完整修改后的初始化表格函数如下:

    import sys
    from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QHeaderView, QAbstractItemView, QSizePolicy
    from PyQt5.QtCore import Qt
    
    def initTable(self):
        """
        根据条件初始化表格
        :return:
        """
        bookName = self.s_bookNameInput.text()
        authorName = self.s_authorInput.text()
        TID = self.s_ComboBox.currentData()
        s_book = Book(bookName, authorName, TID)
        result = bookDao.list(s_book)
        row = 0
        if result:
            row = len(result)
        
        self.bookListTable.setColumnCount(7)
        self.bookListTable.setRowCount(row)
        self.bookListTable.verticalHeader().setVisible(False)  # 隐藏垂直标题 序号
        self.bookListTable.setEditTriggers(QAbstractItemView.NoEditTriggers)  # 禁止编辑单元格
        self.bookListTable.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        
        self.bookListTable.setHorizontalHeaderLabels(
            ['编号', '图书名称', '图书作者', '作者年龄', '作者性别', '图书价格', '图书类别', '图书简介'])
        self.bookListTable.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)  # 列头自适应
        self.bookListTable.setSelectionBehavior(QAbstractItemView.SelectRows)  # 设置选择行为,以行为单位
        
        for i in range(row):
            for j in range(7):
                data = QTableWidgetItem(str(result[i][j]))
                # 设置单元格内容居中对齐
                data.setTextAlignment(Qt.AlignCenter)
                self.bookListTable.setItem(i, j, data)
    
    # 确保你已经在合适的位置导入了所需的模块(这里假设已经导入)
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        # 初始化窗口及控件等...
        window = YourMainWindowClass()  # 你的主窗口类名
        window.initTable()  # 调用初始化表格方法
        window.show()
        sys.exit(app.exec_())
    

    这段代码将会确保所有单元格中的文本都居中显示。注意,由于您未提供完整的上下文环境,我在这里做了一些假设,例如关于导入模块和窗口类的设定,请根据实际项目调整上述代码。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月23日
  • 已采纳回答 2月15日
  • 创建了问题 2月13日