gpt4 book ai didi

python - 尝试从 wxpython 中的按钮调用函数时出错

转载 作者:行者123 更新时间:2023-11-30 23:08:55 24 4
gpt4 key购买 nike

作为 wxpthon 的初学者,我正在创建一个简单的登录脚本,该脚本创建两个按钮:一个用于打开一个窗口供用户创建帐户,另一个用于让用户注册帐户。我的相关代码是:

 yesbutton = wx.Button(panel, label="Yes,  I wish to log in", pos=(50,150), size=(150,60))
self.Bind(wx.EVT_BUTTON, Login.login(Login), yesbutton)


nobutton = wx.Button(panel, label="No, I wish to register", pos=(270,150), size=(150,60))
self.Bind(wx.EVT_BUTTON, Register.register(Register), nobutton)


class Login:


def login(self):
print("login")


class Register:

def register(self):
print("register")

但是,当我运行此代码时,我得到:

TypeError: unbound method login() must be called with Login instance as first argument (got classobj instance instead)

我已经寻找了很多这个答案,但我无法使任何解决方案发挥作用。提前致谢。

最佳答案

您的职能Login.login()Register.register()不接受任何参数,但您传递了 LoginRegister类进入他们。你的第二行应该是:

self.Bind(wx.EVT_BUTTON, Login.login, yesbutton)

Login.login 后面不需要括号在本例中,因为它位于 Bind 范围内功能。同样调整您的其他绑定(bind)。

编辑:您还需要实例化 Login对象和 Register在从这些类中调用任何内容之前。不幸的是,我目前无法访问 wxPython,无法测试它,但请尝试以下操作:

编辑 2:这也会将事件传递到函数中,因此请确保您调用的函数考虑到这一点。

yesbutton = wx.Button(panel, label="Yes,  I wish to log in", pos=(50,150), size=(150,60))
log = Login()
self.Bind(wx.EVT_BUTTON, log.login, yesbutton)


nobutton = wx.Button(panel, label="No, I wish to register", pos=(270,150), size=(150,60))
reg = Register()
self.Bind(wx.EVT_BUTTON, reg.register, nobutton)


class Login:

def login(self, evt):
print("login")

class Register:

def register(self, evt):
print("register")

关于python - 尝试从 wxpython 中的按钮调用函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com