【发布时间】: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 将是 ' ' 并给出错误
标签: python python-3.x function tkinter