جدید آموزش ایجاد رابط گرافیکی کاربر (GUI) در پایتون به وسیله Tkinter قسمت 10 – spinbox
ویجت spinbox
یکی از ویجتهایی که کاربر می تواند یکی از چند آیتم موجود را از آن انتخاب کند spinbox است. این ویجت مثل combobox و listbox قابلیت نشان دادن همه آیتمها را ندارد، بلکه کاربر با استفاده از دو پیکان کناری می تواند بین آیتمها یکی را انتخاب کند. در زیر برنامه ای نوشته ایم که به کاربر این امکان را می دهد سن خود را بین 18 تا 99 سال انتخاب نماید.
برنامه را در زیر می بینید:
import tkinter as tk from tkinter import * root=tk.Tk() root.geometry("300x200") root.resizable(False,False) root.title('spinbox karakit') def agechanged(): lblAge.configure(text="Your age is: " + spnAge.get() + " years") intAge=IntVar spnAge=Spinbox(root, from_=18, to = 99 ,textvariable=intAge, command=agechanged) spnAge.place(height=20,width=50,x=110,y=80) lblAge=Label(root, text="How old are You?") lblAge.place(height=20,width=120,x=100,y=40) root.mainloop()
بعد از اجرای برنامه پنجره زیر نمایش داده می شود:
با تغییر سن ، متن یک لیبل متناسب با انتخاب کاربر تغییر می کند:
توضیح برنامه
خطوط 1 تا 6 مربوط به احضار کتابخانه های مورد نیاز و ایجاد پنجره اصلی هستند.
در خط 7 و 8 یک تابع به نام agechanged تعریف کرده ایم که بعدا به توضیح آن می پردازیم.
در خط بعدی یک متغیر مخصوص tkinter به نام intAge تعریف کردیه ایم که بعدا قرار است سن کاربر داخل آن ذخیره شود.
در خط 10 یک ویجت spinbox با نام spnAge تعریف و مقادیر داخل آن را از عدد 18 تا عدد 99 تعیین نموده ایم و متغیر مرتبط با این ویجت را همان intAge که در خط قبل تعریف شد ، تعیین کرده ایم. تابعی که با تغییر آیتم این ویجت فراخوانی می شود نیز agechanged است.
در تابع agechanged که در خط 7 و 8 تعریف شده، مقدار فعلی متغیر مرتبط با spinbox که در واقع همان intAge هست، با دستور get استخراج می شود و با متن دیگری ترکیب و در لیبل lblAge نمایش داده می شود. این لیبل در خطوط 12 و 13 تعریف و جاگذاری شده است.
تعیین مقادیر spinbox با استفاده از لیست
یک روش دیگر برای اینکه آیتمهای داخل spinbox را مشخص کنیم این است که ابتدا یک لیست ایجاد کنیم و بعد در spinbox مقدار values را برابر این لیست تعیین نماییم:
years=list(range(18, 99)) spnAge=Spinbox(root, values=years ,textvariable=intAge, command=agechanged)
نتیجه تفاوتی با حالت قبل نخواهد داشت.
اگر بخواهیم که spinbox به جای مقادیر عددی حاوی مقادیر رشته ای باشد می توانیم مقادیر رشته ای مورد نظر را در یک لیست ذخیره کنید و به spinbox اختصاص دهید.
با اجرای برنامه زیر کاربر می تواند فصل مورد علاقه اش را از spinbox انتخاب کند و یک لیبل متن متناسب را نمایش می دهد:
import tkinter as tk from tkinter import * root=tk.Tk() root.geometry("300x200") root.resizable(False,False) root.title('spinbox karakit') def seasonchanged(): lblSeason.configure(text="Your favorite season is: " + spnSeason.get()) strSeason=StringVar seasons=['Spring','Summer','Autumn','Winter'] spnSeason=Spinbox(root, values=seasons ,textvariable=strSeason, command=seasonchanged) spnSeason.place(height=20,width=100,x=110,y=80) lblSeason=Label(root, text="What is your favorite season?") lblSeason.place(height=20,width=200,x=70,y=40) root.mainloop()
نتیجه انتخاب یکی از فصل ها را در تصویر زیر می توان دید:
آموزشهای ابزار طراحی GUI در پایتون: tkinter
- کار با فایلها در پایتون tkinter
- کار با menubutton در پایتون tkinter
- کار با ویجت text در پایتون tkinter
- کار با منوها در پایتون tkinter
- کار با Radiobutton در پایتون tkinter
- کار با checkbutton در پایتون tkinter
- کار با scale یا اسلایدر در پایتون tkinter
- کار با spinbox در پایتون tkinter
- کار با combobox در پایتون tkinter
- کار با message box در پایتون tkinter
- کار با canvas در پایتون tkinter
- کار با listbox در پایتون tkinter
- کار با متغیرها در پایتون tkinter
- کار با Entry در پایتون tkinter
- کار با دکمه در پایتون tkinter
- کار با لیبل یا برچسب درپایتون tkinter
- آشنایی اولیه با tkinter ابزار استاندارد طراحی GUI در پایتون