我正在尝试在PyQt Gui中更新我的TableView,这样每当有新条目添加到QPSQL数据库时,它也会在Gui中的TableView中更新它。
目前,连接工作得很好,可以正确地连接到数据库,并显示表中的内容,表中的内容目前只是一个带有姓名、电话号码和地址列的电话簿。问题是,如果我在postgreseSQL数据库中插入一个新行,它将不会在TableView中更新,除非我关闭GUI并重新运行代码。
我只是在寻找一种方法来更新我的TableView,这样,如果有什么东西被添加到Postrgese SQL数据库中,它将自动执行,而不需要任何按钮或任何东西。如有任何帮助,请提前感谢。在
我也将显示我的代码部分。在class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(400, 300)
self.buttonBox = QtGui.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
self.tableView = QtGui.QTableView(Dialog)
self.tableView.setGeometry(QtCore.QRect(20, 50, 256, 192))
self.tableView.setObjectName(_fromUtf8("tableView"))
###############################数据库连接
^{pr2}$
###############################将数据库表添加到主GUI中的表视图中
model = QSqlTableModel()
query = QSqlQuery("SELECT * FROM PHONEBOOK", db)
model.setEditStrategy(QSqlTableModel.OnFieldChange)
model.setQuery(query)
model.submitAll()
self.tableView.setModel(model)
self.tableView.show()
model.select()
我正在尝试在PyQt Gui中更新我的TableView,这样每当有新条目添加到QPSQL数据库时,它也会在Gui中的TableView中更新它。目前,连接工作得很好,可以正确地连接到数据库,并显示表中的内容,表中的内容目前只是一个带有姓名、电话号码和地址列的电话簿。问题是,如果我在postgreseSQL数据库中插入一个新行,它将不会在TableView中更新,除非我关闭GUI并重新运行代码。我...
PyQt
有内置的
数据库
连接类 QtSql 。
在使用
PyQt
连接
MySql
展示数据
时
,如果明确所有
数据库
操作都与 Qt 窗口有关,且不涉及复杂的数据操作,则可以使用内置的 QtSql 类。不需要安装额外的
数据库
类,且能更加便利的与 Qt
TableView
等 Qt 控件进行数据交互。
db = QtSql.QSqlDatabase.addDatabase('Q
MYSQL
')
db.setHostName('localhost')
db.setDatabaseName('dev')
db.setUserName('root')
db.setPassword('123')
详细图文说明请看我的博文https://blog.csdn.net/gui818/article/details/124500424
1.软件功能:
1)分页显示列表功能包括:前后分页,指定页面跳转,设置单页显示条数
2)点击标题栏实现列表内容排序功能(这个功能花了我很长
时
间,在全网就没找到合适的解决方法,要不是参考了Qt开发经验,采用了变通解决办法才最终得以解决)
2.本软件通过QSqlDatabase.addDatabase('Q
MYSQL
')连接
mysql
数据库
驱动,由于当前大部分
pyqt
5所用的版本都是5.15以上,不带有
mysql
驱动,请自行将环境配置好
首先是自己在网上找了很久,基本上大家给出的解决方案都是开通
一个
子线程,然后发射自定义的信号去
更新
Q
Tableview
的数据:
下面给你实例代码:
from
PyQt
5.Qt import *
import time
class ThreadTable(QThread):
update_date =
pyqt
Signal() //自定义
一个
信号
def __init__(self...
PyQT
的模型/视图 (Model/View)编程模式,是MVC的一种简化实现。
本文通过两个实例讲解如何实现
PyQT
对
数据库
可视化操作。
1) 用 QSqlTableModel, Q
TableView
实现 contacts
数据库
的可视化操作,包括显示、
添加
、修改、删除、查询等功能,并提供了示例代码。
2) 通过QSqlRelationalTableModel实现外键表的关联操作
model.setData(model.index(model.rowCount()-1, 0), 'New Data')
model.setData(model.index(model.rowCount()-1, 1), 'More New Data')
# 依此类推,根据表格列数填写数据
4. 刷
新
表格,使
新
数据行显示出来,使用`viewport()`方法和`update()`方法:
self.
tableView
.viewport().update()
完整示例代码:
```python
model = self.
tableView
.model() # 获取数据模型
model.insertRow(model.rowCount()) # 插入
新
行
model.setData(model.index(model.rowCount()-1, 0), 'New Data') # 填充
新
行数据
model.setData(model.index(model.rowCount()-1, 1), 'More New Data')
self.
tableView
.viewport().update() # 刷
新
表格