带有进度条的 tkinter gui [英] tkinter gui with progress bar
本文介绍了带有进度条的 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屋!
查看全文