AttributeError的: 'Ui_Dialog' 对象有没有属性 'lineEdit_3'

问题描述:

链接到我的全码:https://www.dropbox.com/s/0tdnm2yd8038fwh/additem.py?dl=0AttributeError的: 'Ui_Dialog' 对象有没有属性 'lineEdit_3'

这是错误我得到:

File "C:/Users/Lloyd/Desktop/Python Projects/stock/additem.py", line 187, in <module> 
    ui = Ui_Dialog() 
    File "C:/Users/Lloyd/Desktop/Python Projects/stock/additem.py", line 23, in __init__ 
    self.setupUi(self) 
    File "C:/Users/Lloyd/Desktop/Python Projects/stock/additem.py", line 66, in setupUi 
    self.buttonBox.accepted.connect(self.accept()) 
    File "C:/Users/Lloyd/Desktop/Python Projects/stock/additem.py", line 169, in accept 
    brandName = self.lineEdit_3.text() 
AttributeError: 'Ui_Dialog' object has no attribute 'lineEdit_3' 

每次顺利之前,我补充一下:

self.buttonBox.accepted.connect(self.accept()) 

调用此方法:

def accept(self): 
    conn = sqlite3.connect('inventory.db') 
    c = conn.cursor() 

    unix = time.time() 
    dateUpdated = datetime.datetime.fromtimestamp(unix).strftime('%Y-%m-%d %H:%M:%S') 
    company = self.lineEdit_2.text() 
    brandName = self.lineEdit_3.text() 
    genericName = self.lineEdit_4.text() 
    purchasePrice = self.lineEdit_5.text() 
    category = self.lineEdit_6.text() 
    sellingPrice = purchasePrice * sellingFactor 
    quantity = self.lineEdit_7.text() 
    #dosageForm = self.lineEdit_9.text() 
    expiryDate = self.lineEdit_10.text() 

    c.execute(
     "INSERT INTO inventory(dateUpdated, company, brandName, genericName, category, purchasePrice, sellingPrice, quantity, expiryDate) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", 
     (dateUpdated, company, brandName, genericName, category, purchasePrice, sellingPrice, quantity, expiryDate)) 
    conn.commit() 

这是代码的其余部分:

app = QtGui.QApplication(sys.argv) 
window = QtGui.QDialog() 

ui = Ui_Dialog() 
ui.setupUi(window) 

window.show() 
sys.exit(app.exec_()) 
+0

如果没有看到“C:/ Users/Lloyd/Desktop/Python Projects/stock/additem.py”,很难猜测。但可能没有这样的属性。 –

+0

@ThomasKilian它已经被eyllanesc回答了。 – lloydyu24

当你连接一个信号到一个槽,你必须通过它代表的插槽中,语法如下

sender.signal.connect(receiver.slot) 

在你如果你必须改变:

self.buttonBox.accepted.connect(self.accept()) 

到:

self.buttonBox.accepted.connect(self.accept) 

注意:当您传递PyQt插槽名称时,您可以调用它,但是如果您通过评估函数,则不可能这样做。

+1

非常感谢@eyllanesc! – lloydyu24