在pyqt中如何使用for循环在tablewidgets中插入数据?

时间:2011-12-13 01:44:44

标签: python pyqt

我有一些tablewidgets,我想在其中插入一些数据。为此,我使用以下内容:

for index,i in enumerate(list1):
   item = QtGui.QTableWidgetItem()
   item.setText(QtGui.QApplication.translate("Dialog", str(i), None, QtGui.QApplication.UnicodeUTF8))
   item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter)
   self.tableWidget_1.setItem(0, index, item)

此时我会为每个tablewidget执行此操作。我想也许我可以编写一个简单的函数,如下所示:

def function_1(list1,number_of_tablewidget):
    for index,i in enumerate(list1):
       item = QtGui.QTableWidgetItem()
       item.setText(QtGui.QApplication.translate("Dialog", str(i), None, QtGui.QApplication.UnicodeUTF8))
       item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter)
       self.tableWidget_number_of_tablewidget.setItem(0, index, item)

我关心的是number_of_tablewidget。变量将是一个数字,那么我将如何将它与最后一行匹配?感谢。

2 个答案:

答案 0 :(得分:1)

只需将QTableWidget对象发送到您的函数并按原样使用:

def function_1(item_list,tablewidget):
    for index, i in enumerate(item_list):
       #...
       tablewidget.setItem(0, index, item)

答案 1 :(得分:0)

您可以使用getattr()动态评估属性名称:

def function_1(list1,number_of_tablewidget):
    for index,i in enumerate(list1):
       item = QtGui.QTableWidgetItem()
       item.setText(QtGui.QApplication.translate("Dialog", str(i), None, QtGui.QApplication.UnicodeUTF8))
       item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter)
       getattr(self, "tableWidget_%d" % number_of_tablewidget).setItem(0, index, item)