Tkinter 進度條
在這個演示中,我們將學習如何在 Tkinter 中以多種方式建立進度條。
Tkinter 中的進度條元件
進度條元件分析使用者正在進行的使用者任務。我們在幾個地方檢視這個元件,例如在安裝或其他 GUI 應用程式過程中。
這個元件可以開發成兩種模式,確定模式和不確定模式。當程序在確定模式下完成時,該元件可讓你分析進度。
此模式按遞增順序顯示進度。
在不確定模式下,我們可以看到動畫使用這個元件來假設正在發生的事情。在這種模式下,游標在元件的邊緣之間來回跳躍。
在 Tkinter 中使用確定進度條
from tkinter import *
from tkinter import ttk
gui = Tk()
gui.title("Delftstack")
gui.geometry("600x400")
def progress():
# increment of progress value
progress_var["value"] += 20
# create an object of progress bar
progress_var = ttk.Progressbar(gui, orient=HORIZONTAL, length=400, mode="determinate")
progress_var.pack(pady=30)
btn = Button(gui, text="progress", command=progress)
btn.pack(pady=30)
gui.mainloop()
進度條是 ttk
類的一個元件。我們可以使用 Progressbar()
類來使用這個元件。
這個類接受多個引數。
parent
:GUI 視窗的根。orient
:此引數指定方向。我們可以設定兩個值,HORIZONTAL
和VERTICAL
。length
:可以使用此屬性調整長度。mode
:該屬性接受兩種模式,determinate
和indeterminate
。
在這種情況下,我們用一個按鈕來控制進度條。每當按下按鈕時都會呼叫 progress()
函式,該值將增加 20%。
Progressbar
類有不同的方法。該程式碼使用了 start()
和 stop()
方法。
start()
方法包含值,stop()
方法包含零個引數。
from tkinter import *
from tkinter import ttk
gui = Tk()
gui.title("Delftstack")
gui.geometry("600x400")
def StartProgress():
# start progress
progress_var.start(10)
def StopProgress():
# stop progress
progress_var.stop()
# create an object of progress bar
progress_var = ttk.Progressbar(gui, orient=HORIZONTAL, length=400, mode="determinate")
progress_var.pack(pady=30)
btn = Button(gui, text="progress", command=StartProgress)
btn.pack(pady=30)
btn2 = Button(gui, text="stop", command=StopProgress)
btn2.pack(pady=30)
gui.mainloop()
輸出:
在 Tkinter 中使用不確定的進度條
from tkinter import *
from tkinter import ttk
gui = Tk()
gui.title("Delftstack")
gui.geometry("600x400")
def StartProgress():
# start progress
progress_var.start(10)
def StopProgress():
# stop progress
progress_var.stop()
# create an object of progress bar
progress_var = ttk.Progressbar(gui, orient=HORIZONTAL, length=400, mode="indeterminate")
progress_var.pack(pady=30)
btn = Button(gui, text="progress", command=StartProgress)
btn.pack(pady=30)
btn2 = Button(gui, text="stop", command=StopProgress)
btn2.pack(pady=30)
gui.mainloop()
此示例與前面的示例類似,但其型別不同。這個進度條 indeterminate
模式以動畫模式顯示狀態,讓你知道那裡正在發生一些事情,但你無法確定進度到哪裡。
在 Tkinter 進度條中使用文字
此程式碼演示瞭如何使用 Label()
元件獲取價值。
程式碼遵循這些步驟。
-
不幸的是,沒有文字功能來顯示進度條的進度,所以我們建立了一個
stringvar
變數,它接受字串值並將其設定在標籤中。Label()
元件將顯示進度條的值。 -
StartProgress()
函式會增加進度條的狀態。在這個函式中,迴圈被包裹,它將迭代 5 次。
在每次迭代中,進度條的狀態都會增加 20%。set()
方法在字串中設定當前狀態,get()
幫助獲取stringvar
的值。 -
update_idletasks()
方法將更新狀態。每次迭代都有 1 秒的延遲。 -
呼叫
StopProgress()
方法時,狀態將重置為零。
from tkinter import *
from tkinter import ttk
import time
gui = Tk()
gui.title("Delftstack")
gui.geometry("600x400")
def StartProgress():
for i in range(5):
progress_var["value"] += 20
stringvar.set(progress_var["value"])
# get the value
label.config(text=stringvar.get() + " %")
# update value
gui.update_idletasks()
time.sleep(1)
def StopProgress():
# stop progress
progress_var.stop()
# set zero percent
stringvar.set("00.0 %")
label.config(text=stringvar.get())
# create an instance of progress bar
progress_var = ttk.Progressbar(gui, orient=HORIZONTAL, length=400, mode="determinate")
progress_var.place(x=30, y=20)
start_btn = Button(gui, text="Next", command=StartProgress)
start_btn.place(x=30, y=50)
# string variable
stringvar = StringVar()
stringvar.set("00.0 %")
cancel_btn = Button(gui, text="Cancel", command=StopProgress)
cancel_btn.place(x=400, y=50)
label = Label(gui, text=stringvar.get(), font=("", 12))
label.place(x=430, y=25)
gui.mainloop()
輸出:
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn