我一直在使用Tkinter中的变量遇到一些问题,我希望你们中的一些人能够帮助我解决这个问题。我有以下代码......
counter = 0
from tkinter import *
root = Tk()
class HomeClass(object):
def __init__(self, master):
self.master = master
self.frame = Frame(master)
self.CounterTextLabel = Label(root, text=str(counter),
bg="Black", fg="White")
self.CounterTextLabel.pack(fill=X)
self.ActionButton = Button(root, text="ADD", bg="green", fg="White",
command=self.CounterCommand)
self.ActionButton.pack(fill=X)
def CounterCommand(self):
counter = counter + 1
k = HomeClass(root)
root.mainloop()
预期效果是当按下绿色按钮时,数字会更新,每次都会增加一个。但是,当我按下按钮时,出现以下错误。
“UnboundLocalError:赋值前引用的局部变量'计数器'
我该如何纠正这个问题?我希望那里的人可以帮助我。 :)
TIA
答案 0 :(得分:1)
您正在定义类的范围之外的计数器,因此在运行该方法时,它就好像它不存在一样。 您应该通过删除顶部的初始声明然后在init函数中更改您的计数器使用,您应该
self.counter = 0
然后在计数器命令功能中,您可以使用
self.counter = self.counter + 1
然后,您可以通过从分配给k的内容中引用变量来访问类外的变量,如下所示:
k = HomeClass(root)
print(k.counter)