有客自远方来52 2024-05-11 00:22 采纳率: 15.3%
浏览 2
已结题

如何初始化表格数据?

以下是我的代码,如何将从数据库获取到的数据初始化在表格内

def list(text: Text):
    """
    根据条件查询图书信息
    :param Hbook: 查询参数
    :return:
    """
    con = None
    try:
        con = dbUtil.getCon()
        cursor = con.cursor()
        # 查询数据
        sql = "SELECT tID,plain FROM text WHERE tID=tID "
        cursor.execute(sql)
        con.commit()
        return cursor.fetchall()
    except Exception as e:
        print(f"查询数据时发生错误: {e}")
        if con is not None:
            con.rollback()
        return None
    finally:
        dbUtil.closeCon(con)

def initTable(self):
    """
    根据条件初始化表格
    :return:
    """
    result = textDao.list()
    row = 0
    if result:
        row = len(result)
    self.bookListTable.setColumnCount(2)
    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.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOn)
    self.bookListTable.setHorizontalHeaderLabels(
        ['留言编号', '留言内容'])
    self.bookListTable.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch)  # 列头自适应
    self.bookListTable.setSelectionBehavior(
        QAbstractItemView.SelectionBehavior.SelectRows)  # 设置选择行为,以行为单位

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


  • 写回答

4条回答 默认 最新

  • 笑面虎 2024-05-11 00:23
    关注

    以下内容由CHATGPT及笑面虎共同生成、有用望采纳:


    您想要解决的问题

    您提问的目的是想要了解如何将从数据库获取的数据初始化到一个Qt表格控件中。

    问题出现原因

    问题出现的原因是您需要将数据库查询结果映射到Qt界面的表格中,但是您可能不确定如何将这些数据正确地显示在表格的每个单元格中。

    问题解决方案

    基于您提供的代码和问题描述,解决方案包括以下几个步骤:

    1. 确保数据库查询正确无误,并且能够成功获取数据。
    2. 根据查询结果,初始化Qt表格控件,将数据填充到表格中。

    提供代码

    您已经提供了大部分所需的代码,但是有一些小问题需要修正。例如,在您的list函数中,SQL语句"SELECT tID,plain FROM text WHERE tID=tID"可能存在逻辑错误,它应该是"SELECT tID, plain FROM text",除非tID是您的查询条件的一部分。

    另外,您的initTable函数中的代码看起来是正确的,但是请确保textDao.list()返回的数据格式是您期望的,即一个包含元组的列表,每个元组包含两个元素。

    代码运行方式

    要运行您的代码,您需要有以下环境:

    • Python环境
    • Qt框架(您使用的是PyQt5或PySide2)
    • 一个数据库驱动,能够连接到您的数据库(例如,如果您使用的是SQL Server,您可能需要pymssqlpyodbc

    运行代码的方式取决于您的开发环境,通常您可以在IDE中直接运行,或者在命令行中使用python your_script.py来运行。

    代码预期运行结果

    如果您的代码没有问题,预期的运行结果是:

    • 表格控件bookListTable将被初始化,并且根据从数据库查询到的数据,表格中的每个行将被填充相应的tIDplain值。

    推荐相关链接

    • Qt Documentation - Qt官方文档,提供了关于Qt模块和组件的详细信息。
    • PyQt5 Tutorial - PyQt5教程,适合初学者。
    • SQLAlchemy - 一个Python SQL工具包和对象关系映射器,可以简化数据库操作。
    • Qt SQL Module - Qt的SQL模块,可以用于数据库操作。
    • Stack Overflow - 一个编程问答网站,您可以在这里搜索类似问题或提问。
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月11日
  • 创建了问题 5月11日

悬赏问题

  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求