为什么使用for循环给tablewidget调用setitem加数据就崩溃呢?有没有大神可以帮忙看看代码哪里出错了?
直接调用类的additem函数可以加数据,但是调用类的additem2函数就崩溃了。。。
代码如下:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
import sys
import time
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(1130, 799)
self.tableWidget = QtWidgets.QTableWidget(Form)
self.tableWidget.setGeometry(QtCore.QRect(10, 10, 751, 711))
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(2)
self.tableWidget.setRowCount(100)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(1, item)
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(860, 80, 93, 28))
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(Form)
self.pushButton_2.setGeometry(QtCore.QRect(860, 120, 93, 28))
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton_3 = QtWidgets.QPushButton(Form)
self.pushButton_3.setGeometry(QtCore.QRect(860, 160, 93, 28))
self.pushButton_3.setObjectName("pushButton_3")
self.retranslateUi(Form)
self.pushButton.clicked.connect(self.additem)
self.pushButton_2.clicked.connect(self.additem2)
QtCore.QMetaObject.connectSlotsByName(Form)
def additem(self):
self.tableWidget.setItem(0, 0, QTableWidgetItem('我是问题'))
self.tableWidget.setItem(0, 1, QTableWidgetItem('我是答案'))
def additem2(self):
hd1 = '问题1 + houzhui'
hd2 = '问题2 + houzhui'
hd3 = '问题3 + houzhui'
hd4 = '问题4 + houzhui'
hd5 = '问题5 + houzhui'
hd6 = '问题6 + houzhui'
hd7 = '问题7 + houzhui'
hd8 = '问题8 + houzhui'
hd9 = '问题9 + houzhui'
hd10 = '问题10 + houzhui'
wt1 = '回答1'
wt2 = '回答2'
wt3 = '回答3'
wt4 = '回答4'
wt5 = '回答5'
wt6 = '回答6'
wt7 = '回答7'
wt8 = '回答8'
wt9 = '回答9'
wt10 = '回答10'
wenda = {}
wenda = {wt1: hd1, wt2: hd2, wt3: hd3, wt4: hd4, wt5: hd5, wt6: hd6, wt7: hd7, wt8: hd8, wt9: hd9, wt10: hd10}
for i in range(len(wenda)):
for j in range(2):
print(str(i)+','+str(j)+'可以添加项目了')
time.sleep(1)
print('正在添加项目')
time.sleep(1)
for key,value in wenda.items():
print('现在添加')
self.tablewidget.setItem(i, j, QTableWidgetItem(wenda.items(key)))
self.tablewidget.setItem(i,j+1, QTableWidgetItem(wenda.items(value)))
print('问答添加完毕')
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
item = self.tableWidget.horizontalHeaderItem(0)
item.setText(_translate("Form", "问题"))
item = self.tableWidget.horizontalHeaderItem(1)
item.setText(_translate("Form", "答案"))
self.pushButton.setText(_translate("Form", "单一填充"))
self.pushButton_2.setText(_translate("Form", "批量填充"))
self.pushButton_3.setText(_translate("Form", "导出"))
if __name__ == '__main__':
app = QApplication(sys.argv)
form = QWidget(QTableWidget)
ui2 = Ui_Form()
ui2.setupUi(form)
form.show()
sys.exit(app.exec_())
直接调用类的additem函数可以加数据,但是调用类的additem2函数就崩溃了。。。

代码如下:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
import sys
import time
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(1130, 799)
self.tableWidget = QtWidgets.QTableWidget(Form)
self.tableWidget.setGeometry(QtCore.QRect(10, 10, 751, 711))
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(2)
self.tableWidget.setRowCount(100)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(1, item)
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(860, 80, 93, 28))
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(Form)
self.pushButton_2.setGeometry(QtCore.QRect(860, 120, 93, 28))
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton_3 = QtWidgets.QPushButton(Form)
self.pushButton_3.setGeometry(QtCore.QRect(860, 160, 93, 28))
self.pushButton_3.setObjectName("pushButton_3")
self.retranslateUi(Form)
self.pushButton.clicked.connect(self.additem)
self.pushButton_2.clicked.connect(self.additem2)
QtCore.QMetaObject.connectSlotsByName(Form)
def additem(self):
self.tableWidget.setItem(0, 0, QTableWidgetItem('我是问题'))
self.tableWidget.setItem(0, 1, QTableWidgetItem('我是答案'))
def additem2(self):
hd1 = '问题1 + houzhui'
hd2 = '问题2 + houzhui'
hd3 = '问题3 + houzhui'
hd4 = '问题4 + houzhui'
hd5 = '问题5 + houzhui'
hd6 = '问题6 + houzhui'
hd7 = '问题7 + houzhui'
hd8 = '问题8 + houzhui'
hd9 = '问题9 + houzhui'
hd10 = '问题10 + houzhui'
wt1 = '回答1'
wt2 = '回答2'
wt3 = '回答3'
wt4 = '回答4'
wt5 = '回答5'
wt6 = '回答6'
wt7 = '回答7'
wt8 = '回答8'
wt9 = '回答9'
wt10 = '回答10'
wenda = {}
wenda = {wt1: hd1, wt2: hd2, wt3: hd3, wt4: hd4, wt5: hd5, wt6: hd6, wt7: hd7, wt8: hd8, wt9: hd9, wt10: hd10}
for i in range(len(wenda)):
for j in range(2):
print(str(i)+','+str(j)+'可以添加项目了')
time.sleep(1)
print('正在添加项目')
time.sleep(1)
for key,value in wenda.items():
print('现在添加')
self.tablewidget.setItem(i, j, QTableWidgetItem(wenda.items(key)))
self.tablewidget.setItem(i,j+1, QTableWidgetItem(wenda.items(value)))
print('问答添加完毕')
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
item = self.tableWidget.horizontalHeaderItem(0)
item.setText(_translate("Form", "问题"))
item = self.tableWidget.horizontalHeaderItem(1)
item.setText(_translate("Form", "答案"))
self.pushButton.setText(_translate("Form", "单一填充"))
self.pushButton_2.setText(_translate("Form", "批量填充"))
self.pushButton_3.setText(_translate("Form", "导出"))
if __name__ == '__main__':
app = QApplication(sys.argv)
form = QWidget(QTableWidget)
ui2 = Ui_Form()
ui2.setupUi(form)
form.show()
sys.exit(app.exec_())