我有一个简单的TK gui和一个连接到按钮的函数中的长进程,当我点击按钮时我想要一个进度条.我想要一个进度条,我点击按钮,就像它开始一个很长很多的代码行
我怎样才能做到这一点?这里的代码:
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()
Run Code Online (Sandbox Code Playgroud)
我尝试了很多东西,但我还没有找到怎么做.
如何在该应用中添加进度条?
xmc*_*mcp 17
你可以ttk.Progressbar在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()
Run Code Online (Sandbox Code Playgroud)
最好threading在另一个线程中使用和运行代码.
像这样:
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28260 次 |
| 最近记录: |