我有一个连接到数据库的QTableWidget,我正在尝试对其进行设置,以便在选择单元格时可以调用函数。尽管在每次选择单元格时都在调用的函数告诉我“'int'对象没有属性'tableWidget'”,但我却得到了这个奇怪的属性错误,无论何时我引用我的表。我不确定连接是否正确,但是每当选择一个单元格时都会显示错误,所以我觉得某个地方有个小错误
输出:
在这里 追溯(最近一次通话): getSelected中的文件“ /home/selghaza/mufasa2.0/database.py”,第21行 selectedList = self.tableWidget.selectedItems() AttributeError:“ int”对象没有属性“ tableWidget”
def getSelected(self, QTableWidget):
print("IN HEREE")
selectedList = self.tableWidget.selectedItems()
print("List created")
print("Length of list = " + str(len(selectedItems())))
for item in selectedList:
print("item")
def loadData(self, QTableWidget):
self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)
connection = sqlite3.connect('employee.db')
c = connection.cursor()
data = fetch_all()
self.tableWidget.setRowCount(0)
i = 0
self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.tableWidget.verticalHeader().setVisible(False)
self.tableWidget.horizontalHeader().setVisible(False)
self.tableWidget.setShowGrid(False)
for row in data:
self.tableWidget.insertRow(i)
i += 1
j = 0
for x in row:
if (j == 4):
break
if(i == 1):
self.tableWidget.insertColumn(j)
self.tableWidget.setItem(i-1, j, QtWidgets.QTableWidgetItem(" " + str(x)))
j += 1
self.tableWidget.horizontalHeader().resizeSection(0, 188)
self.tableWidget.horizontalHeader().resizeSection(1, 155)
self.tableWidget.horizontalHeader().resizeSection(2, 255)
self.tableWidget.horizontalHeader().resizeSection(3, 45)
self.tableWidget.setStyleSheet("background-color: rgb(0, 0, 0); selection-background-color: #353535;")
self.tableWidget.cellClicked.connect(getSelected)
connection.close()
答案 0 :(得分:0)
QTableWidget.cellClicked(整数行,整数列)
每当单击表格中的单元格时,都会发出此信号。的 指定的行和列是被单击的单元格。
注意: 函数将返回所选行和列的索引,并且您将其连接为:
self.tableWidget.cellClicked.connect(getSelected)
这意味着您要向函数getSelected提供int行,int列:
def getSelected(self, QTableWidget):
您要提供给self一行(自身中有一个整数),因为您会遇到错误AttributeError:'int'对象没有属性'tableWidget'
当QTableWidget看到某人单击了其中一个单元格时,它将发出一个cellClicked事件-您需要连接到该事件,例如:
self.tableWidget.cellClicked.connect(self.getSelected)
和功能getSelected可能类似于:
def getSelected(self, row, column):
# row and column was clicked
item = self.tableWidget.itemAt(row, column)
item_ = item.text()
如果您希望完全选择的行数(例如,单击行标题时):
len(self.tableWidget.selectionModel().selectedRows())
但是,如果要选择至少已选择一个单元格的行:
len(set(index.row() for index in self.tableWidget.selectedIndexes()))