函数内部“名称未定义”
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:NameError:全局名称'...'未定义[重复]