RadioButton
عنصر RadioButton دکمهای است که دارای دو حالت خاموش و روشن میباشد. این عنصر یک دکمهی دایرهای شکل به همراه یک برچسب است. شما با کلیک کردن بر روی دکمهی Radio میتوانید آنرا از حالت خاموش به روشن و یا بالعکس، تغییر دهید. وقتی که یک دکمهی Radio روشن باشد، یک نقطه در وسط آن قرار میگیرد، و زمانی که خاموش باشد، دایرهی آن خالی است.
دکمههای Radio معمولاً زمانی استفاده میشوند که یک کاربر میبایست از بین چند گزینه یکی از آنها را انتخاب کند. برای مثال، زمانی که شما بخواهید جنسیت کاربر را مشخص کنید، میتوانید از دو دکمهی Radio با نامهای مرد و زن استفاده کنید. وقتی که شما از دکمههای Radio استفاده کردید، فقط میتوانید یکی از آن دو را انتخاب کنید. نحوه تعریف کردن عنصر RadioButton به صورت زیر است:
RadioButton(master, option=value, ...)
master، بیانگر پنجره والدی است که RadioButton به آن تعلق خواهد داشت و options، تنظیمات پرکاربرد برای RadioButton میباشند که میتوانند به صورت زوجهای کلید/مقدار که با ویرگول از هم جدا میشوند، مورد استفاده قرار گیرند. در جدول زیر لیست این تنظیمات آمده است:
تنظیمات | شرح |
activebackground | رنگ پس زمینه زمانی که نشانگر ماوس بر روی Radiobutton قرار میگیرد. |
activeforeground | رنگ پیش زمینه، زمانی که نشانگر ماوس بر روی Radiobutton قرار میگیرد. |
anchor | این گزینه نحوه قرار گرفتن Radiobutton در فضای آزاد موجود برای عنصر مشخص میکند. مقدار پیش فرض آن CENTER است. |
bg | رنگ پس زمینه در حالت عادی |
bitmap | برای نمایش تصویر تک رنگ بر روی Radiobutton، این گزینه را به یک bitmap مقدار دهید. |
borderwidth | اندازه خط حاشیه اطراف بخش علامت. پیش فرض 2 پیکسل است. |
command | تابعی که با هر بار تغییر وضعیت Radiobutton فراخوانی میگردد. |
cursor | با مقدار دادن این گزینه یکی از نامهای نشانگر ماوس (arrow ،dot و …) زمانی که ماوس بر روی این عنصر قرار گیرد، ماوس به الگوی مشخص شده تغییر مییابد. |
fg | رنگ متن |
font | فونت استفاده شده برای متن |
height | تعداد خطوط متن (بر اساس پیکسل نمیباشد) بر روی Radiobutton. مقدار پیش فرض 1 است. |
highlightbackground | رنگ فوکوس زمانی که Radiobutton فوکوس ندارد. |
highlightcolor | رنگ فوکوس زمانی که فوکوس به Radiobutton منتقل میشود. |
image | برای نمایش تصویر به جای متن بر روی Radiobutton |
justify | اگر متن چند خطی باشد، این گزینه مشخص کننده نحوه تراز کردن متن است. مقادیر آن: LEFT ،CENTER ،RIGHT |
padx | میزان فاصلهای که بین لبههای چپ و راست Radiobutton با متن درون آن قرار داده میشود. پیش فرض 1 است. |
pady | میزان فاصلهای که بین لبههای بالا و پایین Radiobutton با متن درون آن قرار میگیرد. پیش فرض 1 است. |
relief | نوع نمایش لبه کناری را مشخص میکند. مقدار پیش فرض آن FLAT است. |
selectcolor | رنگ Radiobutton زمانی که مقدار میگیرد. مقدار پیش فرض red است. |
selectimage | اگر برای Radiobutton به جای متن از تصویر استفاده میکنید، میتوانید مقدار این گزینه را به یک تصویر دیگر مقدار دهید تا در زمان مقدار گرفتن آن، این تصویر نمایش داده شود. |
state | مقدار پیش فرض NORMAL است. اما میتوانید با قرار دادن مقدار DISABLED عنصر را خاکستری و غیر فعال کنید. اگر ماوس بر روی دکمه قرار داشته باشد، مقدار آن ACTIVE خواهد بود. |
text | برچسب نمایش داده شده بر روی Radiobutton، برای متنهای چند خطی میتوانید از “n\” استفاده کنید. |
textvariable | برای بازیابی مقدار فعلی متن میتوانید این گزینه را به یک متغییر کنترلی از نوع StringVar انتساب دهید. |
underline | به منظور نمایش زیر خط برای یکی از حروف، شماره اندیس (شروع از صفر) آن را به این گزینه نسبت دهید. مقدار پیش فرض 1- است، هیچکدام از حروف متن زیر خط ندارد. |
value | زمانی که Radiobutton به وسیله کاربر مقدار میگیرد، متغییر کنترلی آن (variable) مقدار فعلی value را دریافت میکند. اگر متغییر کنترلی از نوع IntVar باشد، هر کدام از دکمههای رادیویی درون گروه یک مقدار عددی برای value فراهم میآورند. اگر متغییر کنترلی از نوع StringVar تعریف گردد، مقدار value باید از نوع رشته متنی باشد. |
variable | متغییر کنترلی که این عنصر با Radiobutton های دیگر در یک گروه به اشتراک میگذارند. این متغییر میتواند از نوع IntVar یا StringVar باشد. |
width | عرض عنصر، بر اساس تعداد حروف (نه پیکسل). در صورت عدم مقداردهی، با توجه به فضای مورد نیاز برای محتوای آن پهنای عنصر مشخص میشود. |
wraplength | شما میتوانید تعداد حروف در هر خط را با مقدار دهی این گزینه به عدد مورد نظر، محدود کنید. مقدار پیش فرض 0 است. به این معنی که خطوط تنها در محل خط جدید (‘n\’) شکسته میشوند. |
Radiobutton ها بایستی مقدار یکسانی برای variable و مقدار متفاوتی برای value داشته باشند. میتوانید با استفاده از tab بین این دکمهها جا به جا شوید. مثال زیر کاربرد دکمهی Radio را شرح میدهد:
1: import tkinter 2: from tkinter import * 3: from tkinter import messagebox 4: 5: window = tkinter.Tk() 6: window.geometry('300x200') 7: 8: var = IntVar() 9: radio1 = Radiobutton(window, text="Yes", variable=var, value=1) 10: radio2 = Radiobutton(window, text="No", variable=var, value=2) 11: button = Button(text ='Show Choise') 12: 13: radio1.pack(anchor = W) 14: radio2.pack(anchor = W) 15: 16: button.pack() 17: 18: def buttonShow(event): 19: if (var.get() == 1): 20: messagebox.showinfo("", "You choosed Yes!") 21: elif (var.get() == 2): 22: messagebox.showinfo("", "You choosed No!") 23: else: 24: messagebox.showinfo("", "You don't choose!") 25: button.bind('<Button>', buttonShow) 26: 27: button.mainloop() 28: window.mainloop()
در خط 8 کد بالا یک متغیر کنترلی از نوع صحیح ایجاد کردهایم و در خطوط 9 و 10 آن را به خاصیت variable رو عنصر RadioButton اختصاص دادهایم تا وضعیت خاموش یا روشن بودن آنها را د رخود ذخیره کند. اما این متغیر چطور بفهمد که کدام دکمه الان روشن و کدام یک خاموش است. دکمهها یک خاصیت به نام value دارند که با قرار دادن مقدار آن در داخل متغیر کنترلی، فهمید که کدام دکمه تیک خورده است. این مقدار زمانی در داخل متغیر کنترلی قرار میگیرد که تیک آن دکمه زده شده باشد. در خطوط 19 و 21 با استفاده از متد ()get چک میکنیم که مقدار فعلی متغیر کنترلی چند است؟ اگر مقدار 1 بود یک پیغام و اگر 2 بود پیغام دیگر را چاپ میکنیم. تمامی این شروط و پیغامها را در داخل یک کنترل کننده رویداد نوشته (خطوط 24-18) و آن را در خط 25 به رویداد کلیک دکمه وصل میکنیم: