python GUI實現完美進度條

2021-08-26 18:12:27 字數 1980 閱讀 7568

這種效果在cmd介面看著還可以,但放到圖形介面時就有點醜了,所以我用canvas重新做了乙個進度條,完美滿足了我的要求,看著也比較舒服。

import time

import threading

from tkinter import *

def update_progress_bar():

for percent in range(1, 101):

hour = int(percent/3600)

minute = int(percent/60) - hour*60

second = percent % 60

green_length = int(sum_length * percent / 100)

canvas_progress_bar.coords(canvas_shape, (0, 0, green_length, 25))

canvas_progress_bar.itemconfig(canvas_text, text='%02d:%02d:%02d' % (hour, minute, second))

var_progress_bar_percent.set('%0.2f %%' % percent)

time.sleep(1)

def run():

th = threading.thread(target=update_progress_bar)

th.setdaemon(true)

th.start()

top = tk()

top.title('progress bar')

top.geometry('800x500+290+100')

top.resizable(false, false)

top.config(bg='#535353')

# 進度條

sum_length = 630

canvas_progress_bar = canvas(top, width=sum_length, height=20)

canvas_shape = canvas_progress_bar.create_rectangle(0, 0, 0, 25, fill='green')

canvas_text = canvas_progress_bar.create_text(292, 4, anchor=nw)

canvas_progress_bar.itemconfig(canvas_text, text='00:00:00')

var_progress_bar_percent = stringvar()

var_progress_bar_percent.set('00.00 %')

label_progress_bar_percent = label(top, textvariable=var_progress_bar_percent, fg='#f5f5f5', bg='#535353')

canvas_progress_bar.place(relx=0.45, rely=0.4, anchor=center)

label_progress_bar_percent.place(relx=0.89, rely=0.4, anchor=center)

# 按鈕

button_start = button(top, text='開始', fg='#f5f5f5', bg='#7a7a7a', command=run, height=1, width=15, relief=groove, bd=2, activebackground='#f5f5f5', activeforeground='#535353')

button_start.place(relx=0.45, rely=0.5, anchor=center)

top.mainloop()

顯示效果如下:

Python GUI程式設計各種實現的對比

python gui程式設計各種實現的對比 2011年05月21日 從python語言的誕生之日起,就有許多優秀的gui工具集整合到python當中,這些優秀的gui工具集,使得python也可以在圖形介面程式設計領域當中大展身手,由於python的流行,許多應用程式都是由python結合那些優秀的...

ListView 分組完美實現

專案中需要用到分組列表,資料為動態,apidemo中的例子不能滿足要求。而expandlistview存在收起時才能重新整理的問題 專案要求不能收起 雖然實現了,但是很不爽。最後自己實現了乙個。section 組頭 row 組所屬行 public abstract class groupbasead...

CListCtrl透明完美實現

實現步驟如下 1 把clistctrl子類化 2 在ide中把clistctrl的transparent核取方塊勾上。3 實現wm parentnotify,如下 void cmylistctrl onparentnotify uint message,lparam lparam szfilenam...