带有进度条的 tkinter gui [英] tkinter gui with progress bar

查看:28
本文介绍了带有进度条的 tkinter gui的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的 TK gui 和一个附加到按钮的函数的漫长过程,当我点击按钮时,我想要一个进度条.我想要一个进度条,我点击按钮,就像它开始一个很长的过程,有很多很多代码行

I have a simple TK gui and a long process in a function attached to a button and I want a progress bar when I click on the button. I want a progress bar went i click on the button, just like it start a long proc with many, many code line

我该怎么做?这里的代码:

how can i do that? here the code:

from tkinter import Button, Tk, HORIZONTAL

from tkinter.ttk import Progressbar
import time


class MonApp(Tk):
    def __init__(self):
        super().__init__()


        bt1 = Button(self, text='Traitement', command=self.traitement)
        bt1.grid()
        self.progress = Progressbar(self, orient=HORIZONTAL,length=100,  mode='indeterminate')
        self.progress.grid()
        self.progress.grid_forget()


    def traitement(self):
        self.progress.grid()
        self.progress.start()
        time.sleep(15) 
        ## Just like you have many, many code lines...

        self.progress.stop()

if __name__ == '__main__':

    app = MonApp()
    app.mainloop()

我尝试了很多东西,但我还没有找到方法.

I have tried many things, but I don't haven't found how to.

如何在该应用中放置进度条?

How can I put a progress bar in that app?

推荐答案

您可以在 tkdocs

You can find ttk.Progressbar at tkdocs

from tkinter import *
from tkinter.ttk import *

tk=Tk()
progress=Progressbar(tk,orient=HORIZONTAL,length=100,mode='determinate')

def bar():
    import time
    progress['value']=20
    tk.update_idletasks()
    time.sleep(1)
    progress['value']=50
    tk.update_idletasks()
    time.sleep(1)
    progress['value']=80
    tk.update_idletasks()
    time.sleep(1)
    progress['value']=100

progress.pack()
Button(tk,text='foo',command=bar).pack()
mainloop()

最好使用 threading 并在另一个线程中运行您的代码.

It's better to use threading and run your code in another thread.

像这样:

from tkinter import Button, Tk, HORIZONTAL

from tkinter.ttk import Progressbar
import time
import threading

class MonApp(Tk):
    def __init__(self):
        super().__init__()


        self.btn = Button(self, text='Traitement', command=self.traitement)
        self.btn.grid(row=0,column=0)
        self.progress = Progressbar(self, orient=HORIZONTAL,length=100,  mode='indeterminate')


    def traitement(self):
        def real_traitement():
            self.progress.grid(row=1,column=0)
            self.progress.start()
            time.sleep(5)
            self.progress.stop()
            self.progress.grid_forget()

            self.btn['state']='normal'

        self.btn['state']='disabled'
        threading.Thread(target=real_traitement).start()

if __name__ == '__main__':

    app = MonApp()
    app.mainloop()

这篇关于带有进度条的 tkinter gui的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆