2012-01-16 38 views
0

我與python.When工作我嘗試運行我的DlgDbError.py文件,它給了我錯誤說:運行時錯誤報告失蹤接受屬性

File "C:\rt_sql_layer\ui\DlgDbError_ui.py", line 47, in setupUi 
    QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), DlgDbError.accept) 
AttributeError: 'DlgDbError' object has no attribute 'accept' 

但buttonbox具有接受method..what可以是問題??

+0

'「DlgDbError」對象有沒有屬性「accept'' ...... – Hamish 2012-01-16 08:40:05

回答

2

的錯誤不是你的DlgDbError.py文件,它是你與pyuic4創建DlgDbError_ui.py模塊中。

該模塊將包含一個Ui_DlgDbError類和setupUi方法。此方法有一個參數(名稱爲DlgDbError),該參數取得您在Qt Designer中創建的主窗體類的實例(即也稱爲DlgDbError)。

setupUi方法預計DlgDbError對象有一個accept()插槽,這可能意味着它應該是QDialog的子類。

顯然,您沒有將QDialog的子類傳遞給setupUi,因此您將獲得AttributeError

你可能需要做這樣的事情:

from DlgDbError_ui import Ui_DlgDbError 

class MyDlgDbError(Ui_DlgDbError): 
    def __init__(self, parent=None) 
     self.dialog = QtGui.QDialog(parent) 
     self.setupUi(self.dialog) 
     ... 
+0

我修改了代碼......但是如果我寫self.setupUi(self.dialog),那麼它顯示的只是普通的普通窗口......並且錯誤仍然存​​在......如果我評論它,那麼它可以正常工作...... – poonam 2012-01-17 11:49:41

+0

@poonam 。你正在編輯'pyuic4'生成的'DlgDbError_ui.py'文件嗎?你應該永遠不要這樣做。如果你不叫'setupUi',那麼,儘管你說了什麼,它根本不會工作。如果你做對了,使用'pyuic4'生成的模塊非常容易。所以我最好的猜測是你正在做一些不同於你不告訴我們的事情;-)我唯一能想到的另一件事是你已經在Qt Designer中進行了修改,但是忘記了使用python模塊重新生成'pyuic4'。 – ekhumoro 2012-01-17 17:35:48

+0

我不編輯DlgDbError_ui.py文件..我在DlgDbError.py文件中。 (代碼文件)...我使用pyuic4編譯器將.ui轉換爲.py。但是當我運行它時,空白窗口出現.. – poonam 2012-01-18 06:37:59

1

也許應該是self.buttonBox.accept而不是DlgDbError.accept那麼呢?

1

如果該行是:

QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), DlgDbError.accept) 

即QtCore.SIGNAL( 「接受()」)實際上應該QtCore.SIGNAL(_fromUtf8( 「接受()」))

其中:

_fromUtf8 = QtCore.QString.fromUtf8 
+0

這只是一個猜測,雖然 – avasal 2012-01-16 09:01:20

+0

我想即使QtCore.QObject.connect( self.buttonBox,QtCore.SIGNAL(_fromUtf8(「accepted()」)),DlgDbError.accept)....它給出同樣的錯誤..我的數據庫是utf8格式.. – poonam 2012-01-16 09:57:21

+0

'_fromUtf8'是一個內部方法生成'pyuic4'。它或者什麼也不做,或者在某些情況下,它只是將Python字符串轉換爲Qt字符串。它與這個問題沒有關係,也沒有任何理由在你自己的代碼中使用它。 – ekhumoro 2012-01-16 18:23:15

相關問題