簡體   English   中英

使用 tkinter python 向我的進程添加進度條

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM