pyqt5 利用QComboBox更新QTableWidget 引发程序崩溃

u3.py

-- coding: utf-8 --

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(“MainWindow”)
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName(“centralwidget”)
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setGeometry(QtCore.QRect(140, 180, 441, 241))
self.tableWidget.setObjectName(“tableWidget”)
self.tableWidget.setColumnCount(4)
self.tableWidget.setRowCount(0)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(3, item)
self.comboBox = QtWidgets.QComboBox(self.centralwidget)
self.comboBox.setGeometry(QtCore.QRect(130, 90, 69, 22))
self.comboBox.setObjectName(“comboBox”)
self.comboBox.addItem("")
self.comboBox.setItemText(0, “”)
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox_2 = QtWidgets.QComboBox(self.centralwidget)
self.comboBox_2.setGeometry(QtCore.QRect(300, 90, 69, 22))
self.comboBox_2.setObjectName(“comboBox_2”)
self.comboBox_2.addItem("")
self.comboBox_2.setItemText(0, “”)
self.comboBox_2.addItem("")
self.comboBox_2.addItem("")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
self.menubar.setObjectName(“menubar”)
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName(“statusbar”)
MainWindow.setStatusBar(self.statusbar)

    self.retranslateUi(MainWindow)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
    _translate = QtCore.QCoreApplication.translate
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
    item = self.tableWidget.horizontalHeaderItem(0)
    item.setText(_translate("MainWindow", "新建列"))
    item = self.tableWidget.horizontalHeaderItem(1)
    item.setText(_translate("MainWindow", "性别"))
    item = self.tableWidget.horizontalHeaderItem(2)
    item.setText(_translate("MainWindow", "新建列"))
    item = self.tableWidget.horizontalHeaderItem(3)
    item.setText(_translate("MainWindow", "出生日期"))
    self.comboBox.setItemText(1, _translate("MainWindow", "一车间"))
    self.comboBox.setItemText(2, _translate("MainWindow", "二车间"))
    self.comboBox_2.setItemText(1, _translate("MainWindow", "CNC01"))
    self.comboBox_2.setItemText(2, _translate("MainWindow", "CNC02"))

testu3.py

from PyQt5.QtWidgets import QApplication, QMainWindow, QComboBox, QPushButton, QTableWidgetItem
import sys
from u3 import Ui_MainWindow

class Window(QMainWindow, Ui_MainWindow):

def __init__(self, parent=None):
    super(Window, self).__init__(parent)
    self.u1()

    # self.retranslateUi(self)

def u1(self):
    self.setupUi(self)
    self.comboBox_2.currentIndexChanged.connect(self.n1)
def n1(self, index=None):
    print(index)

    self.tableWidget.clearContents()
    for i in range(self.tableWidget.rowCount()):
        self.tableWidget.removeRow (i)
    self.tableWidget.clear()
    if index==1:
        liss = [[1,2,3,4],[11,22,33,44],[111,222,333,444],[1111,2222,3333,4444]]
    else:
        liss = [["a","b","c","d"],["a1","a2","a3","a4"],["b1","b2","b3","b4"]]
    for i in range(len(liss)):
        self.tableWidget.insertRow(i)
        for j in range(len(liss[i])):

            if j == 1:
                comBox = QComboBox()
                comBox.addItems(['男', '女'])
                comBox.addItem('未知')
                comBox.setStyleSheet('QComboBox{margin:3px}')
                self.tableWidget.setCellWidget(i, 1, comBox)
            elif j == 2:
                searchBtn = QPushButton('修改')
                searchBtn.setDown(True)
                searchBtn.setStyleSheet('QPushButton{margin:3px}')
                self.tableWidget.setCellWidget(i, 2, searchBtn)
            else:
                newItem = QTableWidgetItem(str(liss[i][j]))
                self.tableWidget.setItem(i, j, newItem)
    self.tableWidget.itemChanged.connect(self.n2)

def n2(self, item=None):
    if item:
        self.tableWidget.item(item.row(), 3).setText("9999999999")
        print( item )

    # self.tableWidget.item()
    # self.tableWidget.

if name == ‘main’:
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())

求大神指导一下,为什么选择下拉列表后程序会崩溃,有没有解决办法???在线等急用!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值