با سلام
دوستان به توضیح selection_boxse میپردازم فارسیش میشه جعبه های انتخابی خب کلا دو نوع از این مورد داریم که عبارتند از
1 - نوع اول
2 - نوع دوم
(o_O)
😂😂😂

خب از شوخی که بگذریم این ابزار دونوعه اولین توعش برای زمانیه که شما میخواید بین چند تا گزینه یکی رو انتخاب کنید مثلا زمانی که میخواید خرید انلاین بکیند برای انتخاب استان و شهر از این نوع استفاده میشه اسمشم هست (combobox) نحوه ی ایجادشم اینطوریه ::
mycombobox= ttk.Combobox(root,textvariable = MyVariable)

دقت کنید اول باید یه استرینگ درست کنیم از استرینگ های خود ماژول tkinter یادتونه که ؟ این متغیر رو برای این ایجاد میکنیم که بتونیم اون مقداری رو که انتخاب کردیم توش ذخیره کنیم حالا کد زیر رو ببینید


from tkinter import *
from tkinter import ttk

root=Tk()

ostan = StringVar()

mcb=ttk.Combobox(root,textvariable= ostan)

mcb.pack()
mcb.config(values=('arak','qom','tehran'))

def printvar():
    print(ostan.get())
pbutton =ttk.Button(root,text='print',command=printvar).pack()

خب اول ایمپورت هامه بعد پنجره اصلی و بعدش کومبوباکسم رو ساختم و بعد با کانفیگ values رو برابر یه تاپل قرار دادیم (تاپل ها رو که یادتونه ؟ اگر یادتون نیست اموزش های مقدماتی پایتون رو بخونید اگرم نخوندید مهم نیست یه پرانتز باز میکنیم و توش مقادیر رو میریزم و با ( , ) از هم جداشون میکنیم فقط حواستون باشه تمام مقادیری که توی این کومبو باکس میریزسم باید استرینگ باشه ( اگر گفتید چرا ؟ ) خب معلومه چون اون متغیری که تعریف کردیم که مقدار انتخابی این کومبوباکس توش ذخیره بشه استرینگه و میتونیم اون رو اینت یا هر مقدار دیگه ای در نظر بگیریم و اونموقع تمام اعضای تاپلمون باید از اون نوع باشه خب حالا اگر همین برنامه رو اجزا کنید و قبل انتخابتون پرینت بزنید میبینید که هیچی چاپ میشه (میگم چاپ میشه چون میره خط بعد ولی چیزی رو چاپ نمیکنه ) این شاید خوب نباشه وبخواید یه مقدار رو در حالت پیشفرض داشته باشه خب میتویند از تابع set متغیر ostan استفاده کنیم خط زیر رو به کدتون اضافه کنید و بعد دوباره اجراش کنید ببینید چی میشه
ostan.set('arak')
و البته میتونید از یک مقدار که توی مقادیر کومبوباکسمون  نیست هم استفاده کنیم اگر این کار رو بکنیم و پرینت بزنیم مقداری که دادیم رو چاپ میکنه ولی اگر یکی از مقدار ها رو انتخاب کنیم دیگه اون مقداری که قبلا بهش دادیم توی انتخاب ها برای دفعات بعد نیست بری این قسمت کد زیر رو اضافه کنید و برنامه رو اجرا کنید و بدون تغییر در کوبموباکس اول یه پرینت بزنید و بعد مقدار رو تغییر بدید و پرینت بزنید
ostan.set('hkorasan')
و یه نکته دیگه این که علاوه بر اینها کاربر میتونه هر چیزی که دلش بخواد توی کومبوباکس بنویسه پس حواستون باشه که اگر کومبوباکس داشتید و خواستید از متغیرش استفاده کنید این رو هم در نظر بگیرید یا کاری کنید که کاربر نتونه مقداری از خوش بنویسه ( مطمئنم یادتون نمیاد باید چطور این کار رو بکنید) خیلس سادست براتون در مورد state توضیح داده بودم خط زیر رو اضافه کنید تا کاربر فقط بتونه از مقادیری که شما بهش دادید انتخاب کنه
mcb.state(['readonly'])
ببینید من هرچیزی رو که برای یک ابزار معرفی میکنم ار روی ابزار های دیگه قابل انجام باشه از نظر منطقی پس پایتون اون رو براتون فراهم کرده مثل state که میتونه برای همه ی ابزار ها استفاده بشه ولی خب مثلا استفاده از state برای readonly کردن دکمه (button) غیر منطقیه چون خودش readonly هست ولی میشه ازش استفاده کرد (نمیدونم شایدم یه جایی بکار بیاد )
خب بریم سراغ دومین ابزار از نوع جعبه های انتخابی یعنی spainbox این یکی برای زمانی استفاده میشه که یه رنج از اعداد داریم که میخوایم بینشون انتخاب کنیم مثلا برای انتخاب سال میخوایم ازش استفاده کنیم و میخوایم سال انتخابیمون بین 1360 تا 1394 باشه طیقه ی درست کردنش اینطوریه
MySpinbox = Spinbox(root,from_ =  1360, to = 1394,textvariable = year)

خب یه سری نکات رو باید توضیح بدم اولین نکته این که برای این ابزار از ttk استفاده نکردم چون ttk این ابزار رو نداره و باید از همون حالت عادی tkinter استفاده کنیم و دومیشم اینه که جلوی from یه اندراسکور ( _ ) گذاشتیم چون کلمه ی from یک کلمه ی از پیش تعیین شده ی پایتونه و نمیشه ازش جاهای دیگه ایتفاده کرد پس اینجا توسعه دهندگان tkinter از یه اندراسکرو برای حل این مشکل استفاده کردند و در اخر یه متغیر بهش دادیم که مقادر رو توش ذخیره کنه ببینید اینجا هم مثل کومبوباکس کاربر میتونه عددی غیر از اعدادی که ما معلوم کردیم رو وارد کنه پس موقع استفاده حواستون رو جمع کنید برای استفاده از مقدارشم مثل همون کومبوباکس بادی از مقداری که توی متغیرمون ذخیره کرده استفاده کنیم و البته تابع set هم همینجا کاربرد داره کد خب شما رو با کد زیر تنها میذارم تا بیندیشید بلکه رستگار شوید


from tkinter import *
from tkinter import ttk

root=Tk()

ostan = StringVar()

mcb=ttk.Combobox(root,textvariable= ostan)

mcb.pack()
mcb.config(values=('arak','qom','tehran'))



mcb.state(['readonly'])

year=StringVar()

spb=Spinbox(root, from_=1360, to = 1394, textvariable= year)
spb.pack()
def printvar():
    print(ostan.get())
    print(year.get())
pbutton =ttk.Button(root,text='print',command=printvar)
pbutton.pack()
ostan.set('arak')


پایان اموزش این قسمت