python unbound方法必须使用<myframe>实例作为第一个参数调用<mymethod>(没有任何替代)</myframe> </mymethod>

时间:2011-04-05 13:41:31

标签: python

尝试编译时出现错误

C:\Temp\pythonWork\superGui>superGui.py
  Traceback (most recent call last):
  File "C:\Temp\pythonWork\superGui\superGui.py", line 747, in <module>
  MyFrame.disableAll()
  TypeError: unbound method disableAll() must be called with MyFrame instance as first argument (got nothing instead)

代码snipet

class MyFrame(wx.Frame):
    ---- CODE SNIP ----
    def disableAll(self):
        self.btnBeginInstall.Disable()
        self.btnBeginInstall.Disable()
        self.btnInfraSystem.Disable()
        self.btnIwpcSystem.Disable()
        self.btnIwpcSystem.Disable()
        self.btnIwpcIwpcdba.Disable()
        self.btnLdapOc4jadmin.Disable()
        self.btnLdapOrcladmin.Disable()
        self.btnIas_admin.Disable()
        self.btniwpcadmin.Disable()
        self.btnAll.Disable()

if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    mainFrame = MyFrame(None, -1, "")
    app.SetTopWindow(mainFrame)
    mainFrame.Show()

    #disable the buttons
    success = MyFrame.disableAll()
    app.MainLoop()

我看了几个其他类似的问题,但答案没有突然出现在我身上,或者更可能是我不理解它。

3 个答案:

答案 0 :(得分:4)

您可能需要使用该类的实例。

mainFrame.disableAll()

应该做到这一点,如其他答案所示。

答案 1 :(得分:3)

mainFrame.disableAll()

而不是

MyFrame.disableAll()

这应该可以胜任。

答案 2 :(得分:0)

您将其称为类或静态方法。 self应该来自哪里?你必须在应该做某事的对象上调用该方法 - 即mainFrame.disableAll()

此外,success将为None,因为disableAll不会返回任何内容。你想做什么?