我的python程序有问题。这是一个简单的“数据库”管理器,您可以在其中填写表单,按一下按钮,然后将数据存储在QWidgetTable中。我的问题是添加产品的效果很好,但是编写新的删除功能时显示错误AttributeError: 'Ui_MainWindow' object has no attribute 'delete_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_())