关闭后尝试更新 QTableView child window Python PyQt6
Trying update QTableView after closing child window Python PyQt6
我需要在 parent window 关闭 child window 后使用 setModel
方法自动触发刷新 QTableView。 Child window 向 sqlite 数据库中插入数据。来自 child window:
的代码片段
class addClientWindow(QtWidgets.QWidget):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.initUI()
def initUI(self):
def addButtonHandle():
query = QSqlQuery()
query.exec("insert into clients values(NULL,'"+name.text()+"','"+surname.text()+"')")
self.close()
代码片段parentwindow:
class ClientsWindow(QtWidgets.QWidget):
def __init__(self):
QtWidgets.QWidget.__init__(self, parent=None)
self.initUI()
def addClientHandle(self):
self.window = addClientWindow()
self.window.show()
def triggerTableUpdate(self):
self.mainTable.setModel(self.setClientModel())
如果您想要 window 执行某些操作并在关闭后执行另一个操作,那么您必须使用 QDialog。另一方面,不要连接 SQL 查询,因为您的代码容易受到 SQL 注入攻击。
class addClientWindow(QtWidgets.QDialog):
def __init__(self, parent=None):
QDialog.QWidget.__init__(self, parent)
self.initUI()
def addButtonHandle(self):
query = QSqlQuery()
query.prepare("INSERT INTO clients VALUES(?, ?)")
query.addBindValue(name.text())
query.addBindValue(surname.text())
self.close()
def addClientHandle(self):
self.window = addClientWindow()
self.window.exec_()
print("update table here")
我需要在 parent window 关闭 child window 后使用 setModel
方法自动触发刷新 QTableView。 Child window 向 sqlite 数据库中插入数据。来自 child window:
class addClientWindow(QtWidgets.QWidget):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.initUI()
def initUI(self):
def addButtonHandle():
query = QSqlQuery()
query.exec("insert into clients values(NULL,'"+name.text()+"','"+surname.text()+"')")
self.close()
代码片段parentwindow:
class ClientsWindow(QtWidgets.QWidget):
def __init__(self):
QtWidgets.QWidget.__init__(self, parent=None)
self.initUI()
def addClientHandle(self):
self.window = addClientWindow()
self.window.show()
def triggerTableUpdate(self):
self.mainTable.setModel(self.setClientModel())
如果您想要 window 执行某些操作并在关闭后执行另一个操作,那么您必须使用 QDialog。另一方面,不要连接 SQL 查询,因为您的代码容易受到 SQL 注入攻击。
class addClientWindow(QtWidgets.QDialog):
def __init__(self, parent=None):
QDialog.QWidget.__init__(self, parent)
self.initUI()
def addButtonHandle(self):
query = QSqlQuery()
query.prepare("INSERT INTO clients VALUES(?, ?)")
query.addBindValue(name.text())
query.addBindValue(surname.text())
self.close()
def addClientHandle(self):
self.window = addClientWindow()
self.window.exec_()
print("update table here")