繁体   English   中英

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

[英]Displaying one cell from a selected row using pyqt5

我试图用 PyQt5 创建一个 UI,它有一个 tableWidget 和一个 label,它将在用户滚动时按顺序在表格的每 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))

我用以下命令调用显示 function:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM