Python PyQt4在函数调用方面存在问题

Python PyQt4在函数调用方面存在问题,python,pyqt,pyqt4,Python,Pyqt,Pyqt4,我的python程序有问题。这是一个简单的“数据库”管理器,您可以在其中填写表单,按下按钮,数据存储在QWidgeTable中。我的问题是添加产品可以正常工作,但在编写要删除的新函数时会显示错误AttributeError:'Ui\u MainWindow'对象没有属性“delete\u product” 以下是按钮和函数的代码片段: from PyQt4 import QtCore, QtGui class Ui_MainWindow(object): def setupUi(self

我的python程序有问题。这是一个简单的“数据库”管理器,您可以在其中填写表单,按下按钮,数据存储在QWidgeTable中。我的问题是添加产品可以正常工作,但在编写要删除的新函数时会显示错误
AttributeError:'Ui\u MainWindow'对象没有属性“delete\u product”
以下是按钮和函数的代码片段:

from PyQt4 import QtCore, QtGui
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("Menager"))
        MainWindow.resize(1094, 600)

        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))

        self.addProduct = QtGui.QPushButton(self.centralwidget)
        self.addProduct.clicked.connect(self.add_product)

        self.deleteProduct = QtGui.QPushButton(self.centralwidget)
        self.deleteProduct.clicked.connect(self.delete_product) 
    def add_product(self):
        [...]
    def delete_product(self):
        [...]
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_())
按钮和函数之间有很多代码,大部分是其他小部件和标签,但所有缩进都是正确的。我不知道发生了什么事

此处的原始代码:

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

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):

        MainWindow.setObjectName(_fromUtf8("Menager"))
        MainWindow.resize(1094, 600)

        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))

        self.tableWidget = QtGui.QTableWidget(self.centralwidget)
        self.tableWidget.setGeometry(QtCore.QRect(20, 10, 801, 561))
        self.tableWidget.setMouseTracking(False)
        self.tableWidget.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.tableWidget.setObjectName(_fromUtf8("tableWidget"))
        self.tableWidget.setColumnCount(8)
        self.tableWidget.setRowCount(1)

        item = QtGui.QTableWidgetItem()

        self.tableWidget.setVerticalHeaderItem(0, item)
        item = QtGui.QTableWidgetItem()
        font = QtGui.QFont()
        font.setPointSize(9)
        item.setFont(font)

        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtGui.QTableWidgetItem()
        font = QtGui.QFont()
        font.setPointSize(9)
        item.setFont(font)

        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtGui.QTableWidgetItem()
        font = QtGui.QFont()
        font.setPointSize(9)
        item.setFont(font)

        self.tableWidget.setHorizontalHeaderItem(2, item)
        item = QtGui.QTableWidgetItem()
        font = QtGui.QFont()
        font.setPointSize(9)
        item.setFont(font)

        self.tableWidget.setHorizontalHeaderItem(3, item)
        item = QtGui.QTableWidgetItem()
        font = QtGui.QFont()
        font.setPointSize(9)
        item.setFont(font)

        self.tableWidget.setHorizontalHeaderItem(4, item)
        item = QtGui.QTableWidgetItem()
        font = QtGui.QFont()
        font.setPointSize(9)
        item.setFont(font)

        self.tableWidget.setHorizontalHeaderItem(5, item)
        item = QtGui.QTableWidgetItem()
        font = QtGui.QFont()
        font.setPointSize(9)
        item.setFont(font)

        self.tableWidget.setHorizontalHeaderItem(6, item)
        item = QtGui.QTableWidgetItem()
        font = QtGui.QFont()
        font.setPointSize(9)
        item.setFont(font)

        self.tableWidget.setHorizontalHeaderItem(7, item)
        item = QtGui.QTableWidgetItem()
        font = QtGui.QFont()
        font.setPointSize(9)
        item.setFont(font)
        self.tableWidget.setItem(0, 0, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setItem(0, 1, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setItem(0, 2, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setItem(0, 3, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setItem(0, 4, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setItem(0, 5, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setItem(0, 6, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setItem(0, 7, item)

        self.choiceProduct = QtGui.QComboBox(self.centralwidget)
        self.choiceProduct.setGeometry(QtCore.QRect(832, 70, 141, 27))
        self.choiceProduct.setObjectName(_fromUtf8("choiceProduct"))
        self.labelProduct.setText("Produkt:")

        self.productDate = QtGui.QDateEdit(self.centralwidget)
        self.productDate.setGeometry(QtCore.QRect(832, 130, 141, 27))
        self.productDate.setMaximumDate(QtCore.QDate(2019, 12, 31))
        self.productDate.setMinimumDate(QtCore.QDate(1900, 1, 1))
        self.productDate.setDisplayFormat(_translate("MainWindow", "yyyy", None))
        self.productDate.setObjectName(_fromUtf8("productDate"))
        self.labelDate.setText("Rok wydania:")

        validator = QtGui.QDoubleValidator()

        self.cenaPL = QtGui.QLineEdit(self.centralwidget)
        self.cenaPL.setGeometry(QtCore.QRect(980, 70, 113, 27))
        self.cenaPL.setInputMethodHints(QtCore.Qt.ImhDigitsOnly)
        self.cenaPL.setObjectName(_fromUtf8("cenaPL"))
        self.cenaPL.setPlaceholderText("cena w polsce")
        self.cenaPL.setValidator(validator)

        self.cenaWW = QtGui.QLineEdit(self.centralwidget)
        self.cenaWW.setGeometry(QtCore.QRect(980, 100, 113, 27))
        self.cenaWW.setInputMethodHints(QtCore.Qt.ImhDigitsOnly)
        self.cenaWW.setObjectName(_fromUtf8("cenaWW"))
        self.cenaWW.setPlaceholderText(_fromUtf8("cena na świecie"))
        self.cenaWW.setValidator(validator)

        self.cenaRE = QtGui.QLineEdit(self.centralwidget)
        self.cenaRE.setGeometry(QtCore.QRect(980, 130, 113, 27))
        self.cenaRE.setInputMethodHints(QtCore.Qt.ImhDigitsOnly)
        self.cenaRE.setObjectName(_fromUtf8("cenaRE"))
        self.cenaRE.setPlaceholderText("cena retail")
        self.cenaRE.setValidator(validator)

        self.densityProduct = QtGui.QLineEdit(self.centralwidget)
        self.densityProduct.setGeometry(QtCore.QRect(980, 160, 113, 27))
        self.densityProduct.setInputMethodHints(QtCore.Qt.ImhDigitsOnly)
        self.densityProduct.setObjectName(_fromUtf8("densityProduct"))
        self.densityProduct.setPlaceholderText("gramatura")
        self.boolProduct = QtGui.QCheckBox(self.centralwidget)
        self.boolProduct.setGeometry(QtCore.QRect(850, 160, 96, 22))
        self.boolProduct.setObjectName(_fromUtf8("boolProduct"))
        self.boolProduct.setText(_fromUtf8("Dostępne?"))

        self.brandProduct = QtGui.QLineEdit(self.centralwidget)
        self.brandProduct.setGeometry(QtCore.QRect(832, 210, 261, 27))
        self.brandProduct.setObjectName(_fromUtf8("brandProduct"))
        self.labelBrand.setText("Nazwa firmy:")

        self.addProduct = QtGui.QPushButton(self.centralwidget)
        self.addProduct.setGeometry(QtCore.QRect(900, 240, 97, 27))
        self.addProduct.setObjectName(_fromUtf8("addProduct"))
        self.addProduct.setText("Dodaj")
        self.addProduct.clicked.connect(self.add_product)



        self.importTable = QtGui.QPushButton(self.centralwidget)
        self.importTable.setGeometry(QtCore.QRect(1010, 320, 70, 27))
        self.importTable.setObjectName(_fromUtf8("importTable"))
        self.importTable.setText("Import")

        self.exportTable = QtGui.QPushButton(self.centralwidget)
        self.exportTable.setGeometry(QtCore.QRect(1010, 350, 70, 27))
        self.exportTable.setObjectName(_fromUtf8("exportTable"))
        self.exportTable.setText("Export")

        self.idToDelete = QtGui.QSpinBox(self.centralwidget)
        self.idToDelete.setGeometry(QtCore.QRect(832, 320, 60, 27))
        self.idToDelete.setObjectName(_fromUtf8("idToDelete"))

        self.deleteProduct = QtGui.QPushButton(self.centralwidget)
        self.deleteProduct.setGeometry(QtCore.QRect(900, 320, 97, 27))
        self.deleteProduct.setObjectName(_fromUtf8("deleteProduct"))
        self.deleteProduct.setText(_fromUtf8("Usuń"))
        self.deleteProduct.clicked.connect(self.delete_product)

        self.deleteAllProduct = QtGui.QPushButton(self.centralwidget)
        self.deleteAllProduct.setGeometry(QtCore.QRect(832, 350, 165, 27))
        self.deleteAllProduct.setObjectName(_fromUtf8("deleteAllProduct"))
        self.deleteAllProduct.setText(_fromUtf8("Usuń wszysko"))
        #self.deleteAllProduct.clicked.connect(self.delete_all)

        self.nRandom = QtGui.QSpinBox(self.centralwidget)
        self.nRandom.setGeometry(QtCore.QRect(830, 420, 60, 27))
        self.nRandom.setObjectName(_fromUtf8("nRandom"))

        self.randomizeButton = QtGui.QPushButton(self.centralwidget)
        self.randomizeButton.setGeometry(QtCore.QRect(900, 420, 181, 27))
        self.randomizeButton.setObjectName(_fromUtf8("randomizeButton"))
        self.randomizeButton.setText("Wygeneruj")

        MainWindow.setCentralWidget(self.centralwidget)

        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def delete_product(self):
        chuj = self.idToDelete.text();
        return

    def add_product(self):
        if self.boolProduct.isChecked():
            tekst = "Tak"
        else:
            tekst = "Nie"

        if self.brandProduct.text() == "" and self.densityProduct.text() == "" and self.cenaPL.text() == "" and self.cenaWW.text() == "" and self.cenaRE.text() == "":
            print "Brakujące argumenty"
        else:
            rows = self.tableWidget.rowCount()
            #print rows
            self.tableWidget.insertRow(rows)
            self.tableWidget.setItem(rows, 0, QtGui.QTableWidgetItem(unicode(self.choiceProduct.currentText())))
            self.tableWidget.setItem(rows, 1, QtGui.QTableWidgetItem(unicode(self.brandProduct.text())))
            self.tableWidget.setItem(rows, 2, QtGui.QTableWidgetItem(self.productDate.date().toString('yyyy')))
            self.tableWidget.setItem(rows, 3, QtGui.QTableWidgetItem(self.densityProduct.text()))
            self.tableWidget.setItem(rows, 4, QtGui.QTableWidgetItem(tekst))
            self.tableWidget.setItem(rows, 5, QtGui.QTableWidgetItem(self.cenaPL.text()))
            self.tableWidget.setItem(rows, 6, QtGui.QTableWidgetItem(self.cenaWW.text()))
            self.tableWidget.setItem(rows, 7, QtGui.QTableWidgetItem(self.cenaRE.text()))
            return
    def retranslateUi(self, MainWindow):

        #MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
        item = self.tableWidget.verticalHeaderItem(0)
        item.setText(_translate("MainWindow", "1", None))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("MainWindow", "Produkt", None))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("MainWindow", "Firma", None))
        item = self.tableWidget.horizontalHeaderItem(2)
        item.setText(_translate("MainWindow", "Rok wydania", None))
        item = self.tableWidget.horizontalHeaderItem(3)
        item.setText(_translate("MainWindow", "Gramatura", None))
        item = self.tableWidget.horizontalHeaderItem(4)
        item.setText(_translate("MainWindow", "Dostępność", None))
        item = self.tableWidget.horizontalHeaderItem(5)
        item.setText(_translate("MainWindow", "Cena w Polsce", None))
        item = self.tableWidget.horizontalHeaderItem(6)
        item.setText(_translate("MainWindow", "Cena na świecie", None))
        item = self.tableWidget.horizontalHeaderItem(7)
        item.setText(_translate("MainWindow", "Cena retail", None))

        item = self.tableWidget.item(0, 0)
        item.setText(_translate("MainWindow", "Hoodie", None))
        item = self.tableWidget.item(0, 1)
        item.setText(_translate("MainWindow", "Supreme", None))
        item = self.tableWidget.item(0, 2)
        item.setText(_translate("MainWindow", "2011", None))
        item = self.tableWidget.item(0, 3)
        item.setText(_translate("MainWindow", "280", None))
        item = self.tableWidget.item(0, 4)
        item.setText(_translate("MainWindow", "Tak", None))
        item = self.tableWidget.item(0, 5)
        item.setText(_translate("MainWindow", "1000", None))
        item = self.tableWidget.item(0, 6)
        item.setText(_translate("MainWindow", "1000", None))
        item = self.tableWidget.item(0, 7)
        item.setText(_translate("MainWindow", "1300", None))

    def delete_all(self):
        print "usuwanie wszystkich"

    def generate_products(self):
        print "losowanie"

    def import_db(self):
        print "importowanie"

    def export_db(self):
        print "eksportowanie"



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_())


提供什么是
标签产品、labelDate、labelBrand
?我不明白您指出的错误,这些只是QEditLine或其他输入的标签。奇怪的是你没有那个错误。我尝试重新定位函数,更改名称并将它们分配给其他按钮,但终端仍然显示相同的错误。如果需要帮助,请提供MRE。如果您认为标签是不相关的,那么就完全删除它们,并测试生成的代码,以验证是否出现相同的错误。您的代码不是MRE。