AttributeError:“ int”对象在pyqt5中没有属性“ tableWidget”

时间:2019-06-26 17:08:00

标签: python pyqt5

我有一个连接到数据库的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()

1 个答案:

答案 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()))