所以我正在尝试运行以下代码:
class PageOne(Frame):
def __init__(self, parent, controller):
Frame.__init__(self, parent)
i = 0
def timeout():
global i
barraProgreso["value"] = i
i += 1
print("oli")
# duration is in seconds
display = tkinter.Label(self, text="Progreso")
display.grid(row=1, column=1, sticky=tkinter.N)
barraProgreso = ttk.Progressbar(self, orient='horizontal', length=350, mode='determinate')
barraProgreso.grid(row=1, column=1, sticky=tkinter.N)
controller.after(10, timeout())
#t = Timer(2.0, timeout)
#t.start()
但是出现此错误:
分配前引用的本地变量'i'
我无法使其正常运行,我也不知道为什么,也许关于类及其内部包含的所有内容存在一些概念,我无法编写代码,因为我一直在与它们苦苦挣扎一段时间是Python的一种新功能。我的目标是通过此计时器方法控制进度条的值。
如果您看到我正在做的事情并不是接受所有建议的最佳方式。
谢谢!
答案 0 :(得分:1)
您实际上并不想在i
方法中将timeout
定义为全局变量; i
中定义的__init__
不是全局的。它位于__init__
方法的范围内。
一种更好的方法是将i
定义为您的类的属性:self.i
。这样,您班级中的任何方法都可以轻松访问self.i
。