В PyQT, как я могу использовать для циклов для вставки данных в табличных виджетов? - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть несколько табличных виджетов, в которые я хочу вставить некоторые данные. Для этого я использую следующее:

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)

В данный момент я делаю это для каждого табличного виджета. Я подумал, что, возможно, я мог бы написать простую функцию, что-то вроде этого:

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 ]

1 голос
/ 13 декабря 2011

Просто отправьте объект QTableWidget в вашу функцию и используйте его следующим образом:

def function_1(item_list,tablewidget):
    for index, i in enumerate(item_list):
       #...
       tablewidget.setItem(0, index, item)
0 голосов
/ 13 декабря 2011

Вы можете использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...