函数内部“名称未定义”

Posted

技术标签:

【中文标题】函数内部“名称未定义”【英文标题】:“name is not defined” inside function 【发布时间】:2021-07-07 09:23:34 【问题描述】:

我想创建一个倒计时时钟,我几乎做到了,但如果我在下面运行此代码并按下“开始”按钮,我会收到错误: NameError: name 'be' is not defined。即使我尝试将global be 放在那里,它似乎也不起作用

import tkinter as tk
def set1():
    global be
    if be1 is not '':
        be = int(en.get())
    
def countdown():
    global be
    
    if be >= 0:
        mins, secs = divmod(be, 60)
        timer = ':02d::02d'.format(mins, secs)
        
        label['text'] = timer
        root.after(1000, countdown)
        be -= 1

root = tk.Tk()

label = tk.Label(root, text = '00:00', font = 'Helvetica 25')
label.pack()

en = tk.Entry(root)
en.pack()
be1 = en.get()
tk.Button(root, text = 'set', height = 3, width = 20, command = lambda: set1()).pack()
tk.Button(root, text = 'go', height = 3, width = 20, command = lambda: countdown()).pack()

root.mainloop()

【问题讨论】:

这是因为您在设置值之前尝试将 be 与 0 进行比较。 即使我尝试先按下设置按钮(然后定义)它也会给出相同的错误 您在使用之前不要定义be。是什么让您认为应该定义它? 你不执行be1 = en.get()之前用户有机会输入任何东西? @ThierryLathuille 是的,但之后 be1 将是 ' ' 并给出错误 【参考方案1】:

请在您的代码顶部给be 一个值,例如

be = 0

【讨论】:

以上是关于函数内部“名称未定义”的主要内容,如果未能解决你的问题,请参考以下文章

Python函数名称...未定义

“errorMessage”:“名称''未定义”[关闭]

dir 全局名称未定义(py2 到 py3 迁移)

python:NameError:全局名称'...'未定义[重复]

Python / Access NameError:名称''未定义

NameError:名称未定义;满足条件时定义的变量