我在python中使用SQL命令创建了一个数据库文件。我也使用了很多外键但是我不知道如何用python将这些数据显示到qt上?有任何想法吗?我还希望用户能够添加/编辑/删除数据
答案 0 :(得分:3)
因为这个问题有点广泛而且一般而言请从http://zetcode.com/gui/pyqt4/开始,它会对你有所帮助。一旦你知道你在处理什么,你可以使用QtDesigner制作用户表单并在那里添加函数,但每次在Qt中编辑表单时都要小心,所有添加的python代码都将被删除,所以我建议你遵循一个您项目的MVC模式。
编辑:这可能是您需要显示数据的摘要:考虑qttable是您班级中的网格
def fillQTable(self):
#data = [('1','2','3','4'),('5','6','7','8')] #this is from database
data = self.getData()
rowCount = len(data)
colCount = 4
self.qttable.setRowCount(rowCount)
self.qttable.setColumnCount(colCount)
self.qttabke.verticalHeader().setVisible(False)
self.qttabke.setHorizontalHeaderLabels(QString("num1;num2;num3;num4").split(";"))
self.qttabke.horizontalHeader().setVisible(True)
for s in range(colCount):
self.qttable.horizontalHeaderItem(s).setTextAlignment(Qt.AlignLeft)
for i, row in enumerate(data):
for j, col in enumerate(row):
item = QTableWidgetItem(col)
self.qttabke.setItem(i, j, item)
def connectionDB(self):
try:
cnn=pyodbc.connect("DRIVER={Microsoft Access Driver (*.mdb)}\
;DBQ=Data.mdb") # you can use the db library you like here
# i have used pyodbc to connect to MS Access db
return cnn
except Exception, e:
print e
def getData(self):
cnn = self.connectionDB()
cursor = cnn.cursor()
cursor.execute("select * from DataTable") # DataTable is a table in Data.mdb
rawData = cursor.fetchall()
cnn.commit()
cnn.close()
return rawData
答案 1 :(得分:1)
这个问题有点宽泛,但无论如何我都会尝试回答它。 Qt确实附带了一些可以连接到数据库的模型。特别是像QSqlTableModel
这样的类。如果将这样的模型连接到数据库并将其设置为QTableView
的模型,它应该可以为您提供所需的大部分行为。
不幸的是,我不认为我能比这更具体。一旦编写了一些代码,就可以随意提出一个关于特定问题的新问题(记得包含示例代码!)