在pyqt4 python中的QTableWidget中存储列表值

Posted

技术标签:

【中文标题】在pyqt4 python中的QTableWidget中存储列表值【英文标题】:Store list values in QTableWidget in pyqt4 python 【发布时间】:2019-03-18 07:19:04 【问题描述】:

代码:

myresult = [(449, u'text1', u'checkbox'), (454, u'text2', u'textbox'), (455, u'text3', u'textbox')]
row = 0
for x, x1, x2 in myresult:
g = int(''.join(map(str, x)))  # int type
l = ''.join(x1)  # string type
k = ''.join(x2)  # string type
rcount_general = self.tableWidget.rowCount()
self.tableWidget.insertRow(rcount_general)
r = 0
for i in range(rcount_general + 1):
     if (k == "textbox"):
                self.cb = QtGui.QComboBox()

                lis = ("---select---", "description", "multiple_input")

                self.cb.addItems(lis)
                self.cb.setCurrentIndex(1)
                self.tableWidget_2.setCellWidget(rcount_general, 2, self.cb)
            elif (k == "checkbox"):
                self.cb = QtGui.QComboBox()

                lis = ("---select---", "description", "multiple_input")

                self.cb.addItems(lis)
                self.cb.setCurrentIndex(2)
                self.tableWidget_2.setCellWidget(rcount_general, 2, self.cb)
    self.tableWidget.setItem(row, 0, QtGui.QTableWidgetItem(g))
    self.tableWidget.setItem(row, 1, QtGui.QTableWidgetItem(l))

    r = r + 1
row = row + 1

错误:

g = ''.join(map(str, x)) TypeError: map() 的参数 2 必须支持迭代

请检查下面预期输出的附加图像。在此先感谢您

【问题讨论】:

【参考方案1】:

我不明白你为什么要使用join,这里只需要使用enumerate:

myresult = [(449, u'text1', u'checkbox'), (454, u'text2', u'textbox'), (455, u'text3', u'textbox')]

for row, result in enumerate(myresult):
    self.tableWidget.insertRow(self.tableWidget.rowCount())
    for column, value in enumerate(result):
        item = QtWidgets.QTableWidgetItem(str(value))
        if column == 2:
            combo = QtWidgets.QComboBox()
            combo.addItems([value, "---select---", "description", "multiple_input"])
            self.tableWidget.setCellWidget(row, column, combo)
        self.tableWidget.setItem(row, column, item)

【讨论】:

如何在pyqt4中设置特定的tablewidget列宽 @sandeeppawar 阅读:***.com/questions/26681578/qtableview-column-width, self.tableWidget.setColumnWidth(col, width) 它不适用于 QTableWidget,因为 setColumnWidth(col,width) 是 QTableView() 的一个属性。设置 QTableWidget() 的列宽度的任何其他方式 @sandeeppawar QTableWidget 继承自 QTableView 所以这个方法应该可以工作

以上是关于在pyqt4 python中的QTableWidget中存储列表值的主要内容,如果未能解决你的问题,请参考以下文章

PyQt4 python中的“RuntimeError:调用Python对象时超出最大递归深度”错误

QListView 不接受使用 Python PyQt4 在 QMainWindow 中的丢弃

如何以编程方式更改/更新 Python PyQt4 TableView 中的数据?

运动生成器 2016 PyQt4

python3.6.8 安装pyqt4失败如何解决?

QTableWidget 和 PyQt4 中的列宽