2017-07-17 76 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) 
相关问题