装载栏未加载

时间:2016-01-17 22:14:59

标签: python user-interface python-3.x tkinter

所以我正在编写一个脚本,这是脚本:

from tkinter import *
from tkinter import ttk
import tkinter
window=tkinter.Tk()
load=ttk.Progressbar(window, orient="horizontal",length="200",maximum="100", mode="determinate")
load.pack()
load.configure(value=0)
for int in range (0, 101):
    load.configure(value=int)
    window.title("{}%".format(int))
window.mainloop()

所以我希望我的进度条开始为0然后开始工作但是它从启动窗口开始然后立即变为100。 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

使用after来延迟调用函数。

除此之外你不能使用长时间运行的功能,因为它会停止处理事件的主循环并重新绘制屏幕上的所有对象。

from tkinter import *
from tkinter import ttk
import tkinter

# ---

def update(value=0):
    # update 
    load.configure(value=value)
    window.title("{}%".format(value))

    if value < 100:
        # run again after 100ms (0.1s) with new value
        window.after(100, update, value+1)

# ---

window=tkinter.Tk()

load = ttk.Progressbar(window, orient="horizontal",length="200",maximum="100", mode="determinate")
load.configure(value=0)
load.pack()

# update(0) # run immediately
# run after 100ms (0.1s) with value=0
window.after(100, update, 0) 

window.mainloop()