PySide2自己实现了SQLite与动态模型的链接显示

自学确实进度很慢,不过还是慢慢在摸索中前进,第一次将动态显示UI并将QTableView通过Qsqlmodle链接sqlite数据库并显示成功,记录如下,供初级入门爱好者学习并探讨。

import sys

from PySide2.QtWidgets import *
from PySide2.QtUiTools import *
from PySide2.QtSql import *
# from PySide2.QtCore import *
# from PySide2.QtGui import *

class Stats:

    def __init__(self):

        # 动态导入UI文件
        self.ui = QUiLoader().load('SQLITE2QTableView.ui')
        self.ui.setWindowTitle("Database Demo")

        # 设置链接数据库
        self.db = QSqlDatabase.addDatabase('QSQLITE')
        self.db.setDatabaseName('worker.db')
        if self.db.open():  # 打开数据库 成功
            # self.__openTable()  # 打开数据表
            # print("打开数据库成功")
            pass
        else:
            QMessageBox.warning(self, "错误", "打开数据库失败")

        #链接2个按钮的信号
        self.ui.btn_del.clicked.connect(self.delrow)
        self.ui.btn_add.clicked.connect(self.addrow)

        # 设置数据模型
        self.model = QSqlTableModel()
        self.model.setTable('worker')
        self.model.setEditStrategy(QSqlTableModel.OnFieldChange)
        self.model.select()

        # UI视图链接模型
        self.ui.tableView.setModel(self.model)
        # self.ui.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)  # 使表宽度自适应


    # 删除一行的槽函数
    def delrow(self):
        curIndex = self.ui.tableView.currentIndex()  # 获取当前选择单元格的模型索引
        self.model.removeRow(curIndex.row())  # 删除当前行
        self.model.submit()

    # 增加一行的槽函数
    def addrow(self):
        rowNum = self.model.rowCount()
        self.model.insertRow(rowNum)
        self.model.setData(self.model.index(rowNum,0),id)
        self.model.submit()

app = QApplication(sys.argv)
stats = Stats()
stats.ui.show()
app.exec_()

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是一个使用 PySide2 和 Matplotlib 实时动态显示图像的程序示例: ```python import sys import random from PySide2.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget from PySide2.QtCore import Qt from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.figure import Figure from matplotlib.animation import FuncAnimation class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建 Matplotlib 图形 self.figure = Figure() self.canvas = FigureCanvas(self.figure) self.ax = self.figure.add_subplot(111) self.ax.set_xlim([0, 10]) self.ax.set_ylim([0, 100]) # 创建 PySide2 布局和窗口 central_widget = QWidget() self.setCentralWidget(central_widget) layout = QVBoxLayout(central_widget) layout.addWidget(self.canvas) # 开始动画 self.animation = FuncAnimation(self.figure, self.update_plot, interval=1000) def update_plot(self, frame): # 生成随机数据 data = [random.randint(0, 100) for _ in range(10)] # 更新 Matplotlib 图形 self.ax.clear() self.ax.set_xlim([0, 10]) self.ax.set_ylim([0, 100]) self.ax.plot(range(10), data) # 更新 PySide2 窗口 self.canvas.draw() if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 这个程序创建了一个带有 Matplotlib 图形的 PySide2 窗口。在程序中,我们使用 FigureCanvas 类来将 Matplotlib 图形嵌入到 PySide2 窗口中。然后,我们创建了一个实时动态更新的 Matplotlib 图形,通过 FuncAnimation 类来实现。在 update_plot 方法中,我们生成随机数据并更新 Matplotlib 图形,然后使用 FigureCanvas 的 draw 方法来更新 PySide2 窗口。最后,我们调用 QApplication 的 exec_ 方法来进入事件循环,等待用户操作。当用户关闭窗口时,程序退出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自学开源爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值