【问题标题】:“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 将是 ' ' 并给出错误

标签: python python-3.x function tkinter


【解决方案1】:

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

be = 0

【讨论】:

    猜你喜欢
    • 2018-11-02
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多