【问题标题】:Why is program giving NameError even after defining function? [duplicate]为什么即使在定义函数之后程序也会给出 NameError? [复制]
【发布时间】:2019-09-07 13:56:15
【问题描述】:

我想绑定一个函数来打开一个带有表单的新窗口,以使用“注册”按钮填写详细信息。但是即使在定义了 register() 函数之后,当我单击按钮时它也会给出 NameError。

尝试过: 1)“命令=功能”方法 2) btn.bind() 方法 仍然报错。

register_btn = Button(main_screen,text = "Register", bg = "grey",width = "30", height = "2")
register_btn.pack()
register_btn.bind("<Button-1>", register)

#function
def register(event):
---

发生异常:NameError 名称“注册”未定义

【问题讨论】:

  • 在绑定之前定义函数。所以在绑定之上定义它。
  • 此类问题需要带有minimal reproducible example。您可能会以这种方式自己找到答案。作为新用户,请拨打tour阅读How to Ask

标签: python tkinter


【解决方案1】:

您需要在实际调用该函数之前定义它,除非您当然使用类。

#function
def register(event):
    pass

register_btn = Button(main_screen,text = "Register", bg = "grey",width = "30", height = "2")
register_btn.pack()
register_btn.bind("<Button-1>", register)

【讨论】:

  • 谢谢你,伙计。问题解决了。不知道我犯了这么一个菜鸟错误。
  • 别担心,我们都去过那里,你介意接受正确的答案吗?我真的很感激。 @NeerajRawat
  • “你需要在实际调用之前定义函数,除非你使用类” 嗯?类也不例外。
  • 不,我的意思是你可以从同一个类中的另一个方法调用一个类方法,无论它是在哪里定义的,无论是向上还是向下。 @Aran-Fey 明白我的意思了吗?
  • @Sahil 就像你可以从另一个函数调用一个函数,不管它在哪里定义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-14
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-02
  • 1970-01-01
相关资源
最近更新 更多