[英]Use QlineEdit to update SQLite database in PyQt
我試圖獲取多個QLineEdit對象,以在單擊向SQLite數據庫的提交按鈕時進行更新。 我也有一個QTableView顯示數據庫。 提交按鈕將一行添加到數據庫,但不保存。 我希望將行編輯添加到新創建的行中。
import sys
from testdbtableform import *
from PyQt4 import *
from PyQt4 import QtSql, QtGui, QtCore
from PyQt4.QtSql import (QSqlDatabase, QSqlQuery, QSqlRelation,
QSqlRelationalDelegate, QSqlRelationalTableModel)
def createConnection():
db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('demomap.db')
db.open()
print (db.lastError().text())
return True
class MyForm(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.model = QtSql.QSqlTableModel(self)
self.model.setTable("userlist")
self.model.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit)
self.model.select()
self.ui.tableView.setModel(self.model)
QtCore.QObject.connect(self.ui.Submit, QtCore.SIGNAL('clicked()'), self.dbinput)
def dbinput(self):
row = self.model.rowCount()
self.model.insertRow(row)
self.model.submitAll()
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
if not createConnection():
sys.exit(1)
myapp = MyForm()
myapp.show()
sys.exit(app.exec_())
我有2行編輯輸入到用戶名和電子郵件列。 如果我能得到一個如何正確使用它的例子,我將能夠理解其余的輸入。 我對python和pyqt相當陌生。 如果必須將其切換為pyside,我願意這樣做。
您應該將數據提交到數據庫。 使用OnManualSubmit將數據緩存到模型中。
self.model.submitAll()
也許?
import sys
from testdbtableform import *
from PyQt4 import QtSql, QtGui, QtCore, QtSql
def createConnection():
db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('demomap.db')
if db.open():
return True
else:
print db.lastError().text()
return False
class MyForm(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.model = QtSql.QSqlTableModel(self)
self.model.setTable("userlist")
self.model.setEditStrategy(2)
self.model.select()
self.ui.tableView.setModel(self.model)
self.ui.Submit.clicked.connect(self.dbinput)
def dbinput(self):
self.model.insertRow(-1)
text = self.ui.lineEdit.text()
if self.model.setData(self.model.index(-1, 0), text):
self.model.submitAll()
else:
print "There was a problem setting the data."
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
if not createConnection():
sys.exit(1)
myapp = MyForm()
myapp.show()
sys.exit(app.exec_())
我更改了dbinput以向您展示它如何工作,並且還清理了代碼中需要幫助的其他部分。
這在大多數情況下應該可以工作,但是如果沒有db文件和ui文件,我將無法對其進行測試。
看來您需要花費更多時間閱讀和理解文檔。 http://pyqt.sourceforge.net/Docs/PyQt4/classes.html
祝你好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.