我以前问过一个类似的问题,但结果不起作用,我不知道为什么。 这是原始代码:
def click_btn_printouts(self):
self.cur.execute("""SELECT s.FullName, m.PreviouslyMailed, m.nextMail, m.learnersDate, m.RestrictedDate, m.DefensiveDate FROM
StudentProfile s LEFT JOIN Mailouts m ON s.studentID=m.studentID""")
self.all_data = self.cur.fetchall()
self.search_results()
self.table.setRowCount(len(self.all_data))
self.tableFields = ["Check","Full name","Previously mailed?","Next mail","learnersDate","Restricted date","Defensive driving date"]
self.table.setColumnCount(len(self.tableFields))
self.table.setHorizontalHeaderLabels(self.tableFields)
self.checkbox_list = []
for i, self.item in enumerate(self.all_data):
FullName = QtGui.QTableWidgetItem(str(self.item[0]))
PreviouslyMailed = QtGui.QTableWidgetItem(str(self.item[1]))
LearnersDate = QtGui.QTableWidgetItem(str(self.item[2]))
RestrictedDate = QtGui.QTableWidgetItem(str(self.item[3]))
DefensiveDate = QtGui.QTableWidgetItem(str(self.item[4]))
NextMail = QtGui.QTableWidgetItem(str(self.item[5]))
self.table.setItem(i, 1, FullName)
self.table.setItem(i, 2, PreviouslyMailed)
self.table.setItem(i, 3, LearnersDate)
self.table.setItem(i, 4, RestrictedDate)
self.table.setItem(i, 5, DefensiveDate)
self.table.setItem(i, 6, NextMail)
chkBoxItem = QtGui.QTableWidgetItem()
chkBoxItem.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
chkBoxItem.setCheckState(QtCore.Qt.Unchecked)
self.checkbox_list.append(chkBoxItem)
self.table.setItem(i, 0, self.checkbox_list[i])
建议在函数末尾添加以下代码(精确缩进):
^{pr2}$并添加以下功能:
def log_change(self):
self.changed_items.add(self.item)
print(self.item)
预期打印的是编辑过的数据,但我得到的是编辑前的数据。在
我不能使用QTableView和QtSql,除非我能找到一种方法将它用于SQL查询,将每个选定的记录都放入一个列表中,并阻止某些列被编辑。如果有人知道如何做这些,那就太好了,我现在真的没有时间亲自查看所有的文档。在
我要做的就是让用户能够更改QTableWidget中的数据,并将更改后的数据作为记录获取。在
基本上,我的最终目标是为QTableWidget提供等效的setEditStrategy(QSqlTableModel.OnManualSubmit)
。在
我一直在想办法解决这个问题,我只想把它弄清楚,这是我最不需要做的事情来完成这个程序为一个客户。在
没有一个最小的工作示例总是很难回答的,所以我自己创建了一个示例,并将来自other post的建议放入,对其进行修改,以便它输出更改后的项的文本及其在表中的位置。在
现在您可以使用这个例子来引用任何进一步的问题。在
相关问题 更多 >
编程相关推荐