使用pyqt5显示选定行中的一个单元格

Posted

技术标签:

【中文标题】使用pyqt5显示选定行中的一个单元格【英文标题】:Displaying one cell from a selected row using pyqt5 【发布时间】:2021-07-25 05:01:30 【问题描述】:

我正在尝试使用 PyQt5 创建一个 UI,该 UI 具有一个 tableWidget 和一个标签,该标签将在用户滚动时按顺序在表格的每 4 列中显示文本。 我似乎无法从表格中获取所选单元格中的文本。我得到的最接近的是:

def open_csv_in_table (self):

    f = open ("test.csv")

    fData = csv.reader(f)

    csvTable = list(fData)

    self.tableWidget.setRowCount(len(csvTable))

    self.tableWidget.setColumnCount(len(csvTable[0])-4)

    for line in range( len(csvTable)):

        for row in range(len(csvTable[0])):

            self.tableWidget.setItem(line, row,QtWidgets.QTableWidgetItem(csvTable[line][row]))

    self.tableWidget.setColumnWidth(0 , 10) # ID

    self.tableWidget.setColumnWidth(1 , 150) # TEST NAME

    self.tableWidget.setColumnWidth(2 , 50) # STATUS

    self.tableWidget.setColumnWidth(3 , 300) # REMARKS

    self.tableWidget.setColumnWidth(4 , 737) # LONG DESCRIPTION

def label_display(self):

    self.label.setText(str(self.tableWidget.itemClicked))

    print(str(self.tableWidget.itemClicked))

我使用以下方法调用显示函数:

self.open_csv_in_table()          
self.tableWidget.itemClicked.connect (lambda: self.label_display())

【问题讨论】:

【参考方案1】:

itemClicked 是一个信号,它没有单击项目的信息,因此不是获取该值的方法。信号要做什么是通过插槽的参数传递数据,在您的情况下,您必须更改为:

def label_display(self, item):
    self.label.setText(item.text())

self.open_csv_in_table()          
self.tableWidget.itemClicked.connect(self.label_display)

【讨论】:

哇,谢谢你修复了它,如果我可以问为什么我不能用 lambda 调用它? @BenPinhas 因为没有必要,所以使用 lambda 方法是不好的做法。 @BenPinhas 请查看行程

以上是关于使用pyqt5显示选定行中的一个单元格的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript/jquery 如何从选定行中的每个单元格获取值

在tableView中选择多个单元格并将另一个tableView单元格中的选定单元格显示为标签?

单元格中的选定按钮显示在重用单元格上 - 也使用 sender.tag 进行按钮区分

有条件地显示具有匹配值的单元格的行中的值

从 PyQt5 中的 QTableWidget 中删除单元格填充

在选定的单元格行返回 TableView