2017-07-17 78 views
0

我正在嘗試爲自定義模式中單擊「確定」按鈕時創建自定義函數。AttributeError:'Second'object has no attribute'funct'

class Second(QDialog): 
    def __init__(self, parent=None): 
     super(Second, self).__init__(parent) 
     def funct(): 
      print("This is a test") 
     buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel, self) 
     buttonBox.rejected.connect(self.reject) 
     buttonBox.accepted.connect(self.funct) 

我能夠無任何併發症同時使用self.reject()和self.accept(),但是當我嘗試使用self.funct(),我在標題收到錯誤消息。 沒有類似問題的建議似乎有幫助。特別是QDialogBu​​ttonBox的東西嗎?

+0

正如書面所述,'def __init__'下面縮進了'def funct'。這是你的意圖嗎? –

+1

嵌套函數創建一個本地名稱。所以名字'funct'不是第二類的成員。 –

+0

是的,它是故意的。我想在關閉QDialog實例之前執行一些其他功能。那麼我應該在Second之外定義功能嗎?如果是的話,如果函數是在類之外定義的,我將如何關閉窗口? – Aiveebetter

回答

0

funct函數是嵌套函數,以便它不是Second類的一部分,所以它是不恰當的使用實例(self)來訪問它,你必須做的是直接訪問,因爲它的用途:

buttonBox.accepted.connect(funct) 
相關問題