【问题标题】:Trouble with progressbar in tkintertkinter 中的进度条出现问题
【发布时间】:2016-07-13 00:08:13
【问题描述】:

这是我的代码

janela_barra=Toplevel()
janela_barra.title("Processando...")
janela_barra["bg"]="light grey"
janela_barra.minsize(width=400, height=80)
janela_barra.maxsize(width=400, height=80)
comprimento = janela_barra.winfo_screenwidth()
altura = janela_barra.winfo_screenheight()
x = (comprimento/2)-(400/2)
y = (altura/2)-(80/2)
janela_barra.geometry("400x80+%d+%d" % (x, y))
janela_barra.iconbitmap('icon6.ico')
pb = ttk.Progressbar(janela_barra, orient=HORIZONTAL, length=200, mode='determinate')
pb.grid(column=0,row=0)
pb["value"]=0 
pb["maximum"]=100

然后在for里面有这个:

for i in range(0,tamanho):
    pb["value"]=i
    pb.update()

其中tamanho是for的迭代次数(现在420),但问题是,它只打开一个窗口然后关闭,我看不到进度条的实际功能,无论我增加多少tamanho

【问题讨论】:

  • 该循环可能会在几毫秒内运行,所以听起来它的行为符合预期。

标签: python tkinter progress-bar


【解决方案1】:

只需在循环中添加sleep(来自模块time),您就会看到进度。这是一个例子:

from tkinter import Tk, Button, Toplevel
from tkinter import ttk
from time import sleep

root = Tk()

def fct_run_for():
    top=Toplevel(root)
    top.title("Progression")
    pb = ttk.Progressbar(top, orient="horizontal", length=200, mode='determinate')
    pb.grid(column=0,row=0)
    pb["value"]=0 
    pb["maximum"]=100
    for i in range(100):
        pb["value"] += 1
        pb.update()
        sleep(0.1)

Button(root, text="Run", command=fct_run_for).pack()
root.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多