无法填充QTableWidget

时间:2015-06-03 21:07:04

标签: python python-2.7 qt4 pyqt4 qtablewidget

我尝试填充QTableWidget(设置行数和列数,添加列名并向单元格添加数据),但小部件显示为空,不会抛出任何错误。

以下是工作示例,请参阅类TableForm():

{{1}}

有什么问题?

1 个答案:

答案 0 :(得分:1)

您正在混淆几种将ui添加到对话框的方法。第二次调用setupUi会覆盖表填充,这会将行和列重置为零。

我已经在下面的代码中解决了这个问题,并且还纠正了其他一些问题(请参阅评论):

# no need to inherit Ui_TableForm
class TableForm(QtGui.QDialog):
  def __init__(self):
    super(TableForm, self).__init__()
    self.ui = Ui_TableForm()
    self.ui.setupUi(self)
    data = [['name1', 'name2'], {'name1':[1], 'name2':[2]}, 2]
    col_names = data[0]
    col_data = data[1]
    rows = data[2] + 1
    cols = len(col_names)
    self.ui.table_widget.setRowCount(rows)
    self.ui.table_widget.setColumnCount(cols)
    self.ui.table_widget.setHorizontalHeaderLabels(col_names)
    # use enumerate
    for n, key in enumerate(col_names):
      for m, item in enumerate(col_data[key]):
        # item content must always be strings
        newitem = QtGui.QTableWidgetItem(str(item))
        self.ui.table_widget.setItem(m, n, newitem)

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    # ui setup is all done in __init__
    dialog = TableForm()
    dialog.show()
    sys.exit(app.exec_())