首页 > 解决方案 > 如何使用计时器更改 Tkinter Python 中的进度条值

问题描述

所以我试图运行这段代码:

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。我的目标是通过这个计时器方法来控制进度条的值。

如果您发现我所做的并不是我接受各种建议的最佳方式。

提前致谢!

标签: pythonvariablestkinterprogress-bar

解决方案


您实际上并不想在您的方法中定义i为全局;定义的timeout不是全局的。它位于方法的范围内。i__init____init__

更好的方法是定义i为您的类的属性:self.i. 然后你类中的任何方法都可以轻松访问self.i


推荐阅读