با سلام خدمت همراهان همیشگی
بهنام صباغی هستم با اموزش tkinter در خدمتتونم توی این قسمت میخوام در مورد progressbar صحبت کنم اول بذارید بگم چیه دیدید وقتی دارید برنامه ای رو نصب میکنید یه نواز اون پایین هست که بهتون نشون میده چقدر از مراحل طی شده ؟ و چقدر مونده ( که همیشه تا ته میره بعد باید اون یه سانت اخرش رو نیم ساعت صبر کنی تا بره (o_O)  😂😂😂 )
خب بریم سراغ ساختش اینم بگم که از ttk استفاده میکنیم راستی تا یادم نرفته بگم ( شایدم قبلا گفته باشم الان دقیق یادم نیست ) وقتی از ttk استفاده میکنیم دیگه نمیتونیم مثل قبل از پراپرتی های fg و bg و اینها استفاده کنیم اگر بخوایم از اینها استفاده کنیم باید از style استفاده کنیم که در درس ها اینده توضیح میدم اینجا فقط اینو گفتم که یوقت تست نکنید ببینید جواب نمیده فوشم بدید 😂 خب بریم سراغ ساخت پروگرس بار

progressbar=ttk.Progressbar(root,orient = HORIZONTAL , length = 200)
اینم مثل بقیه ابزار ها ایجاد میشه و از الگوی همونها پیروی میکنه پس من توضیح نمیدم فقط در مورد orient بگم که مربوط به عمودی و افقی بودنه که وقتی اونو مساوی HORIZONTAL میذاریم افقی میشه و وقتی VERTICAL میذاریم عمودی میشه و اینم بگم که lenght برای مزیان طول ابزار به پیکسله و ربطی به مقداری که نشون میده نداره مقدارش رو با پراپرتی value مشخص میکنیم که در ادامه میگم اما الان میخوام اول بگم بعضی وقتا ما نمیدونیم کی کارمون تموم میشه یا چقدر طول میکشه و فقط میخوایم به کاربر نشون بدیم که کار داره انجام میشه و کاربر باید صبر کنه توی این حالت باید پراپرتی mode رو برابر 'indeterminate' قرار بدیم اینطوری
progressbar.config(mode='indeterminate')

خب حالا میتونید با تابه استارت به پروگرس بارتون بگید که کار کنه اینطوری
progressbar.start()
و میتونید با تابع استاپ بهش بگید که وایسه اینطوری
progressbar.stop()
خب خیلی توضیح دادم بذارید یه کد بذارم که همه ی چیز هایی که گفتم توش باشه تا اجرا کنید دقیق متوجه بشید
#***********CODE**************
from tkinter import *
from tkinter import ttk
root=Tk()
progressbar=ttk.Progressbar(root,orient = VERTICAL , length = 200)
progressbar.pack()
progressbar.config(mode='indeterminate')

started= True
def stop_start():
    global started
    if started:
        progressbar.stop()
        started=False
    else:
        progressbar.start()
        started= True

stopbutton=ttk.Button(root,text= 'STOP', command =stop_start).pack()



خب اجرا کنید و ببینید که اگر دکمه استارت رو بزنید شروع میشه و اگر دوباره بزنیدش متوفق میشه
خب حالا بریم سراغ زمانی که میدونیم چقدر زمان میبره کارمون و میخوایم از نوع دومش استفاده کنیم ساختش دقیقا مثل همینه فقط باید mode رو بجای 'indeterminate' برابر 'determinate' قرار بدیم و یه ماکسیمم براش تعیین کنیم ( اگر نکنیم پیشفرض 100 میگیره ) و میتونیم بهش یه مقدار اولیه هم بدیم ( اگر ندیم صفر در نظر میگیره ) و میتونیم براش یه متغیر تعیین کنیم تا هم به مقدارش دسترسی داشته باشیم هم تغییراتمون رو روی متغیرش انجام بدیم همه ی اینهایی که گفتم اینجوری نوشته میشه
#*****************CODE******************
from tkinter import *
from tkinter import ttk
root=Tk()
progressbar=ttk.Progressbar(root,orient = VERTICAL , length = 200)
progressbar.pack()

started= True
def stop_start():
    global started
    if started:
        progressbar.stop()
        started=False
    else:
        progressbar.start()
        started= True

stopbutton=ttk.Button(root,text= 'STOP', command =stop_start).pack()



progressbar.config(mode='determinate',maximum =100 , value = 4.2)
progressbar.config(value = 8.0)


یه تابعد دیگه داریم به اسم step بدون ورودی یکی میبره جلو با ورودی به اندازه ورودیمون میبره جلو هم بدون ورودی  هم  با ورودی رو در زیر میبینید
progressbar.step()
progressbar.step( 8.0)

تستشو میذارم به عهده خودتون سخت نیست که