[英]Adding a progress bar to my process with tkinter python
我的進程使用 Tkinter,但是當我運行我的代碼時,我的程序凍結了在我的流程中實現進度條,我的代碼非常簡單,只需下載一些信息,然后像 excel 一樣保存它,但是完成這個過程需要一些時間,所以我如何在這里實現進度條。
root=Tk()
root.title('Info Dowload')
root.iconbitmap('Logo.ico')
root['bg'] = '#E1FAF9'
#VariablesInicio
fecha1=Entry(root)
fecha2=Entry(root)
date1.insert(0, "ejm:2022-03-15")
date2.insert(0, "ejm:2022-03-15")
#Label
label1=Label(root,text="First Date(aaaa-mm-dd):",font=('Bahnschrift',11))
label2=Label(root,text="Second date(aaaa-mm-dd):",font=('Bahnschrift',11))
def Click():
boton1.config(state= "disable")
label3=Label(root,text="Working with: "+date1.get())
label4=Label(root,text="Working with: "+date2.get())
label3.grid(row=3,column=0)
label4.grid(row=4,column=0)
startFac=str(date1.get())+' 00:00:00'
endFac=str(date2.get())+' 23:59:59'
##First Query
startMF=str(date1.get())
endMF=str(date2.get())
startMF=startMF.replace('-','/')
endMF=endMF.replace('-','/')
df=query1(startMF, endMF)
df1=query2(startFac, endFac, df)
sales=pd.merge(left=df,right=df1,how='left',on=['code1','code2','code3'])
sales.to_excel('sales.xlsx',index=None)
#Button
import tkinter as tk
boton1=tk.Button(root,text='Ejecutar',bg='#20bebe',fg='white',height=1,width=6,command=Click)
#Print info
label1.grid(row=0,column=0)
label2.grid(row=1,column=0)
fecha1.grid(row=0,column=1)
fecha2.grid(row=1,column=1)
boton1.grid(row=2,column=0)
root.mainloop()
為了添加進度條,您可以使用 Progressbar class 如下:
progressbar = Progressbar(root, orient='horizontal',mode='indeterminate',length=<your preferred length>)
此外,您還必須定義何時開始和停止顯示進度條。 為此,請分別在click()
function 的開頭和結尾添加pb.start()
和pb.stop()
命令。
[ @Matiss 建議] 為了解決進度條不動的問題,可以import threading
模塊,使用方法如下:
root=Tk()
root.title('Info Dowload')
root.iconbitmap('Logo.ico')
root['bg'] = '#E1FAF9'
#VariablesInicio
fecha1=Entry(root)
fecha2=Entry(root)
date1.insert(0, "ejm:2022-03-15")
date2.insert(0, "ejm:2022-03-15")
#Label
label1=Label(root,text="First Date(aaaa-mm-dd):",font =('Bahnschrift',11))
label2=Label(root,text="Second date(aaaa-mm-dd):",font =('Bahnschrift',11))
def Click():
boton1.config(state= "disable")
label3=Label(root,text="Working with: "+date1.get())
label4=Label(root,text="Working with: "+date2.get())
label3.grid(row=3,column=0)
label4.grid(row=4,column=0)
progressbar.start()
t1.start()
def download():
startFac=str(date1.get())+' 00:00:00'
endFac=str(date2.get())+' 23:59:59'
##First Query
startMF=str(date1.get())
endMF=str(date2.get())
startMF=startMF.replace('-','/')
endMF=endMF.replace('-','/')
df=query1(startMF, endMF)
df1=query2(startFac, endFac, df)
sales=pd.merge(left=df,right=df1,how='left',on=['code1','code2','code3'])
sales.to_excel('sales.xlsx',index=None)
progressbar.stop()
#Code for multithreading
t1 = threading.Thread(target=download)
#Code for progress bar
progressbar = Progressbar(root, orient='horizontal',mode='indeterminate',length=<your preferred length>)
progressbar.grid()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.