【问题标题】:Reading all the values from Qtablewidget in PyQt从 PyQt 中的 Qtablewidget 读取所有值
【发布时间】:2016-08-17 04:15:28
【问题描述】:

我在我的 Gui 中导入了一个 QtableWidget。我是 PyQt 和 Qt 设计师的新手。 我需要读取在 QtableWidget 的单元格中输入的值。 我现有的代码如下。

from PyQt4 import QtCore, QtGui

 try:
     _fromUtf8 = QtCore.QString.fromUtf8
 except AttributeError:
      _fromUtf8 = lambda s: s

 class Ui_MainWindow(object):
     def setupUi(self, MainWindow):
         MainWindow.setObjectName(_fromUtf8("MainWindow"))
         MainWindow.resize(800, 600)
         self.centralwidget = QtGui.QWidget(MainWindow)
         self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
         self.tableWidget = QtGui.QTableWidget(self.centralwidget)
         self.tableWidget.setGeometry(QtCore.QRect(180, 80, 256, 192))
         self.tableWidget.setObjectName(_fromUtf8("tableWidget"))
         self.tableWidget.setColumnCount(2)
         self.tableWidget.setRowCount(3)
         item = QtGui.QTableWidgetItem()
         self.tableWidget.setVerticalHeaderItem(0, item)
         item = QtGui.QTableWidgetItem()
         self.tableWidget.setVerticalHeaderItem(1, item)
         item = QtGui.QTableWidgetItem()
         self.tableWidget.setVerticalHeaderItem(2, item)
         item = QtGui.QTableWidgetItem()
         self.tableWidget.setHorizontalHeaderItem(0, item)
         item = QtGui.QTableWidgetItem()
         self.tableWidget.setHorizontalHeaderItem(1, item)
         MainWindow.setCentralWidget(self.centralwidget)
         self.menubar = QtGui.QMenuBar(MainWindow)
         self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 25))
         self.menubar.setObjectName(_fromUtf8("menubar"))
         MainWindow.setMenuBar(self.menubar)
         self.statusbar = QtGui.QStatusBar(MainWindow)
         self.statusbar.setObjectName(_fromUtf8("statusbar"))
         MainWindow.setStatusBar(self.statusbar)

         self.retranslateUi(MainWindow)
         QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL(_fromUtf8("cellChanged(int,int)")), self.slot)
         QtCore.QMetaObject.connectSlotsByName(MainWindow)

     def retranslateUi(self, MainWindow):
         MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
         item = self.tableWidget.verticalHeaderItem(0)
         item.setText(QtGui.QApplication.translate("MainWindow", "1", None, QtGui.QApplication.UnicodeUTF8))
         item = self.tableWidget.verticalHeaderItem(1)
         item.setText(QtGui.QApplication.translate("MainWindow", "2", None, QtGui.QApplication.UnicodeUTF8))
         item = self.tableWidget.verticalHeaderItem(2)
         item.setText(QtGui.QApplication.translate("MainWindow", "3", None, QtGui.QApplication.UnicodeUTF8))
         item = self.tableWidget.horizontalHeaderItem(0)
         item.setText(QtGui.QApplication.translate("MainWindow", "x", None, QtGui.QApplication.UnicodeUTF8))
         item = self.tableWidget.horizontalHeaderItem(1)
         item.setText(QtGui.QApplication.translate("MainWindow", "y", None, QtGui.QApplication.UnicodeUTF8))

     def slot(self):
         row= self.tableWidget.currentItem()
         print str(row)

 if __name__ == "__main__":
     import sys
     app = QtGui.QApplication(sys.argv)
     MainWindow = QtGui.QMainWindow()
     ui = Ui_MainWindow()
     ui.setupUi(MainWindow)
     MainWindow.show()
     sys.exit(app.exec_())

运行此程序后,我在 def slot(self) 中遇到错误。

【问题讨论】:

  • 什么错误?!在寻求代码错误帮助时,请始终发布完整的回溯。示例代码中的缩进搞砸了,但如果我修复它,调用插槽时不会出现任何错误。
  • 当我运行上述程序时,它会显示一个主窗口,其中包含一个包含 2 列 x 和 y 的表。当我在单元格中输入值时,我在终端中得到以下语句,

标签: python pyqt4 qt-designer qtablewidget qtablewidgetitem


【解决方案1】:

这不是错误。 self.tableWidget.currentItem() 返回 PyQt4.QtGui.QTableWidgetItem object ,这就是您打印的内容。

你想要这个:

def slot(self):
    curItem = self.tableWidget.currentItem()
    print curItem.text()

【讨论】:

    猜你喜欢
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    相关资源
    最近更新 更多