如何使用PySide将数据添加到QTableWidget

时间:2013-06-03 02:52:44

标签: python qt pyqt pyside

这个问题的答案要么是用C ++,要么是不能回答我的问题。 我正在学习python,我不是专业程序员,我学过这门语言但还没有构建实时应用程序。

  • 我使用QT设计了用户界面。
  • 我将此用户界面导入了我的主程序。

用户界面 [附加截图] * 尝试实现: *

  • 我想将数据添加到QLineEdit中,当我点击“添加行”按钮时,它应该将数据输入QTableWidget。

  • 我已经使用此语句将UI导入到我的主程序中 来自“firstApp”导入PyMainWindow

  • 我是否需要在主程序中为QTableWidget创建新对象以添加数据?

这是我试图做的但它不起作用

代码不起作用:

  

self.addData.clicked.connect(self.addDataClicked)

def addDataClicked(self):
    username = self.userName.text()
    print username ## for testing if signal is working ##

    self.item.setItem(0,0,username) 

##其中0是行,0是列,username是我想要添加的数据##

我得到的错误是项目全局不存在。我理解这一点,但我在想,因为我已经将UI导入我的主应用程序,python会知道我在UI文件中讨论该项目。这是这样写的。

    item = QtGui.QTableWidgetItem()
    self.tableWidget.setHorizontalHeaderItem(0, item)
    item = QtGui.QTableWidgetItem()
    self.tableWidget.setHorizontalHeaderItem(1, item)
    item = QtGui.QTableWidgetItem()
    self.tableWidget.setHorizontalHeaderItem(2, item)
    item = QtGui.QTableWidgetItem()
    self.tableWidget.setHorizontalHeaderItem(3, item)
    item = QtGui.QTableWidgetItem()
    self.tableWidget.setHorizontalHeaderItem(4, item)
    item = QtGui.QTableWidgetItem()
    self.tableWidget.setHorizontalHeaderItem(5, item)
    self.tableWidget.horizontalHeader().setVisible(True)

请帮忙。

1 个答案:

答案 0 :(得分:1)

您输入的数据应该是您的表格标题?似乎很不寻常。

来自documentation

  

在添加到表之前,项目在表外构建   在所需位置的表:

QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(pow(row, column+1)));
tableWidget->setItem(row, column, newItem);

尝试这样的事情:

def addDataClicked(self):
    username = self.userName.text()

    self.myTable.insertRow(0)
    item = QtGui.QTableWidgetItem(username)
    self.myTable.setItem(0, 0, item)

[编辑] 问题是,新项目是作为新的独立对象创建的,然后您将添加到容器中。它以这种方式对Qt中的所有项目视图小部件起作用(但是其中一些具有允许您在创建时执行此操作的构造函数)

从之前链接的页面:

  

列表窗口小部件的构造方式与任何其他窗口小部件相同:

QListWidget *listWidget = new QListWidget(this);
  

列表项可以在构造时直接添加到列表小部件中:

new QListWidgetItem(tr("Sycamore"), listWidget);
new QListWidgetItem(tr("Chestnut"), listWidget);
new QListWidgetItem(tr("Mahogany"), listWidget); 
  

它们也可以在没有父列表小部件的情况下构建,并添加到某些列表中   晚些时候:

QListWidgetItem *newItem = new QListWidgetItem;
newItem->setText(itemText);
listWidget->insertItem(row, newItem);