我收到了错误......
a = a + b
UnboundLocalError: local variable 'a' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
如果我在开始时分配了两个变量a和b,我不明白为什么会发生错误.
from tkinter import *
a = 10
b = 12
def stopProg(e):
root.destroy()
def addNumbers(e):
a = a + b
label1.configure(text= str(a))
root=Tk()
button1=Button(root,text="Exit")
button1.pack()
button1.bind('<Button-1>',stopProg)
button2=Button(root,text="Add numbers")
button2.pack()
button2.bind('<Button-1>',addNumbers)
label1=Label(root,text="Amount")
label1.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
无论何时修改函数内的全局变量,都需要首先将该变量声明为全局变量.
因此,您需要为全局变量执行此操作,a因为您在其中进行了修改addNumbers:
def addNumbers(e):
global a
# This is the same as: a = a + b
a += b
# You don't need str here
label1.configure(text=a)
Run Code Online (Sandbox Code Playgroud)
以下是global关键字的参考.
此外,我想指出,如果您使用以下command选项可以改进您的代码Button:
from tkinter import *
a = 10
b = 12
def stopProg():
root.destroy()
def addNumbers():
global a
a += b
label1.configure(text=a)
root=Tk()
button1=Button(root, text="Exit", command=stopProg)
button1.pack()
button2=Button(root, text="Add numbers", command=addNumbers)
button2.pack()
label1=Label(root, text="Amount")
label1.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
从来没有充分的理由使用绑定来代替command选项.
| 归档时间: |
|
| 查看次数: |
3120 次 |
| 最近记录: |