Combobox 如何通过单击按钮将输入数据从tablewidget传递到组合框?

Combobox 如何通过单击按钮将输入数据从tablewidget传递到组合框?,combobox,pyqt,qtablewidget,Combobox,Pyqt,Qtablewidget,我想在我的表格中输入数据,然后在按下pyqt中的“ok”按钮后,将其显示在我的组合框中。我可以知道怎么做吗?每当我运行代码时,它只会说self.comboBox.addItem(项目)中有一个错误。我不知道该使用哪个命令。以下是我的部分代码: def设置(自身,对话框): ... ... self.comboBox=QtGui.QComboBox(对话框) self.comboBox.setGeometry(QtCore.QRect(20100431,22)) self.comboBox.se

我想在我的表格中输入数据,然后在按下pyqt中的“ok”按钮后,将其显示在我的组合框中。我可以知道怎么做吗?每当我运行代码时,它只会说self.comboBox.addItem(项目)中有一个错误。我不知道该使用哪个命令。以下是我的部分代码:

def设置(自身,对话框):
... 
...
self.comboBox=QtGui.QComboBox(对话框)
self.comboBox.setGeometry(QtCore.QRect(20100431,22))
self.comboBox.setObjectName(_fromUtf8(“comboBox”))
self.tableWidget=QtGui.QTableWidget(对话框)
self.tableWidget.setGeometry(QtCore.QRect(20470651171))
self.tableWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
self.tableWidget.setTextElideMode(QtCore.Qt.elidelight)
self.tableWidget.setVerticalScrollMode(QtGui.QAbstractItemView.ScrollPerItem)
self.tableWidget.setRowCount(1)
self.tableWidget.setColumnCount(129)
self.tableWidget.setObjectName(_fromUtf8(“tableWidget”))
self.tableWidget.horizontalHeader().setVisible(True)
self.tableWidget.horizontalHeader().setDefaultSectionSize(25)
self.tableWidget.horizontalHeader().setMinimumSectionSize(26)
self.tableWidget.verticalHeader().setDefaultSectionSize(25)
self.tableWidget.verticalHeader().setHighlightSections(True)
self.pushButton_7=QtGui.QPushButton(对话框)
自动按钮_7.设置几何(QtCore.QRect(220、650、75、23))
self.butdown_7.setObjectName(_fromUtf8(“butdown_7”))
self.button_7.点击连接(self.additem)
def重新传输(自我,对话框):
...
...
self.tableWidget.setSortingEnabled(False)
def附加项(自身):
item=self.tableWidget.item(0,0)
self.comboBox.addItem(项目)
更新:该解决方案仅适用于我的tablewidget的第一个框。我试着这样做:

def additem(self):
    for i in range(0, self.tableWidget.columnCount()):
        item = self.tableWidget.item(0,i)
        if item != None:
            text = item.text()
            self.comboBox.addItem(text)
def附加项(自身):
尽管如此:
item=self.tableWidget.item(0,0).text()
self.comboBox.addItem(项目)
item1=self.tableWidget.item(0,1).text()
self.comboBox.addItem(项目1)
但是,我一直得到一个错误,即“NoneType”对象没有属性“text”

更新:我尝试了你的建议。我试图上传图像,这样会更清晰,但我需要10个声誉,以便这样做。不管怎样,我在tablewidget中输入了这个:11 22 33 44每一个放在一个盒子里,四个盒子。但按下“ok”后,组合框中只出现了11个。即使我在其他框中输入了我的值,它也不起作用,它只对第一个框起作用。我需要的是它们在我的组合框中显示为'11,22,33,44'。有可能这样做吗?以及我的tablewidget的所有128列?

addItem(self)
item
tableWidgetItem
类型。您需要的是
QString
作为组合框项添加,因此请仅尝试更正此行:

item = self.tableWidget.item(0,0).text()
下面是一个工作示例:

# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui
from PyQt4.QtCore import Qt

class Widget(QtGui.QWidget):
    def __init__(self):
        super(Widget, self).__init__()
        self.layout = QtGui.QVBoxLayout(self)

        self.comboBox = QtGui.QComboBox(self)
        self.comboBox.setGeometry(QtCore.QRect(20, 100, 431, 22))

        self.tableWidget = QtGui.QTableWidget(self)
        self.tableWidget.setGeometry(QtCore.QRect(20, 470, 651, 71))
        self.tableWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
        self.tableWidget.setTextElideMode(QtCore.Qt.ElideRight)
        self.tableWidget.setVerticalScrollMode(QtGui.QAbstractItemView.ScrollPerItem)
        self.tableWidget.setRowCount(1)
        self.tableWidget.setColumnCount(3) 
        self.tableWidget.horizontalHeader().setVisible(True)
        self.tableWidget.horizontalHeader().setDefaultSectionSize(25)
        self.tableWidget.horizontalHeader().setMinimumSectionSize(26)
        self.tableWidget.verticalHeader().setDefaultSectionSize(25)
        self.tableWidget.verticalHeader().setHighlightSections(True)
        self.tableWidget.setItem(0, 0, QtGui.QTableWidgetItem("first"))
        self.tableWidget.setItem(0, 1, QtGui.QTableWidgetItem("second"))
        self.tableWidget.setItem(0, 2, QtGui.QTableWidgetItem("third"))
        self.tableWidget.resizeColumnsToContents()

        self.pushButton_7 = QtGui.QPushButton("Add item 0.0 to combo")
        self.pushButton_7.setGeometry(QtCore.QRect(220, 650, 75, 23))
        self.pushButton_7.clicked.connect(self.additem)

        self.layout.addWidget(self.comboBox)
        self.layout.addWidget(self.tableWidget)
        self.layout.addWidget(self.pushButton_7)

    def additem(self):
        item = self.tableWidget.item(0,0)#.text()
        self.comboBox.addItem(item)

if __name__ == '__main__':
    app = QtGui.QApplication([])
    w = Widget()
    w.show()
    sys.exit(app.exec_())
编辑

如果要将表格行中的所有单元格添加到组合框中,则
additem
应如下所示:

def additem(self):
    for i in range(0, self.tableWidget.columnCount()):
        item = self.tableWidget.item(0,i)
        if item != None:
            text = item.text()
            self.comboBox.addItem(text)

请记住,如果表单元格为空(item==None),则不会向组合框中添加任何内容

Hi,我意识到此代码只允许值传输一次。我想这样做,这样我就可以在不关闭和重新打开整个程序的情况下更改值。可能吗?此外,我还想对tablewidget中的所有其他框执行相同的操作。我尝试为另一列(0,1)的另一个“item1”创建相同的代码,但它仅适用于其中一列。有什么解决办法吗?我将展示我在上面的帖子中所做的代码。请在我的答案中点击编辑。不断出现错误
NoneType对象没有属性文本
,可能是因为某些表单元格为空。另外
虽然true
是无限循环。它仍然不起作用,我已经更新了我的帖子,同时我将继续尝试我的代码。更新的答案:你可以从我的答案中运行示例,它起作用,所以这意味着你做错了什么。请以新问题的形式发布工作示例,因为您的主要问题是solvedOk,我将以新问题的形式发布