QTableWidget读取数据库数据实现界面可视化

My Environment

  • Python 3.x
  • Pyqt5
  • MySQL数据库
  • Qt designer
  • PyUIC
  • 各种轮子

实现方式

利用pymysql查到数据后,将数据在界面的tableWidget中展示出来
最终效果:
QTableWidget读取数据库数据实现界面可视化_第1张图片


实现过程

1.首先需要先在界面中设计好表格及样式(包含隔行变色等)

# 表格样式
self.tableWidget.setStyleSheet("QTableWidget::item:hover{background-color:rgb(92,188,227,200)}"
                                           "QTableWidget::item:selected{background-color:#1B89A1}"
                                           "QHeaderView::section,QTableCornerButton:section{ \
                                            padding:3px; margin:0px; color:#DCDCDC;  border:1px solid #242424; \
                                            border-left-width:0px; border-right-width:1px; border-top-width:0px; border-bottom-width:1px; \
                                            background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252); }"
                                           "QTableWidget{alternate-background-color:#A9F5E1; background: white; color: #6b6d7b;

样式效果:
QTableWidget读取数据库数据实现界面可视化_第2张图片
修改配色可参考: 色彩表格工具.
其他表格样式配置:

         # 设置行表头
        self.tableWidget.setHorizontalHeaderLabels(["XXXX", "XXXX", "XXXX"])
        # 表格禁止编辑
        self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
        # 行间隔变色(boolen)
        self.tableWidget.setAlternatingRowColors(1)

2.配置好数据库,确保能建立连接后开始查询操作(通过按钮绑定时间发起)

# 打开数据库连接(IP地址/数据库用户名/登录密码/数据库模式名/编码方式/端口号)
database = pymysql.connect(host='localhost', user='tree',
                                   password='5201314', db="databasename", charset='utf8', port=3306)
        cur = database.cursor()
        # 数据库查询操作
        cur.execute('select * from tablename')
        rows = cur.fetchall()
        # 取得记录个数,用于设置表格的行数
        row = cur.rowcount
        # 取得字段数,用于设置表格的列数
        vol = len(rows[0])
        cur.close()
        database.close()

        self.tableWidget.setRowCount(row)
        self.tableWidget.setColumnCount(vol)

        for i in range(row):
            for j in range(vol):
                # 临时记录,不能直接插入表格
                temp_data = rows[i][j]
                # 转换后可插入表格
                data = QTableWidgetItem(str(temp_data))
                self.tableWidget.setItem(i, j, data)

        self.button_sql.setText('刷新记录')

END

你可能感兴趣的:(PythonGUI从调库到打包)