Button

عنصر Button برای قرار دادن دکمه‌ها در یک برنامه پایتون استفاده می‌شود. دکمه‌ها می‌توانند متن یا عکس را به نمایش بگذارند. شما می‌توانید یک تابع را به یک دکمه متصل کنید، به صورتی که هنگام کلیک کردن دکمه، این تابع به صورت خودکار فراخوانی شود. نحوه تعریف کردن عنصر دکمه به صورت زیر است:

Button (master, option=value, ...)

master، بیانگر پنجره والدی است که این دکمه به آن تعلق خواهد داشت و Options، تنظیمات پرکاربرد برای دکمه می‌باشند که می‌توانند به صورت زوج‌های کلید/مقدار که با ویرگول از هم جدا می‌شوند، مورد استفاده قرار گیرند. در جدول زیر لیست این تنظیمات آمده است:

تنظیمات شرح
activebackground رنگ پس زمینه زمانی که نشانگر ماوس بر روی دکمه قرار می‌گیرد، را مشخص می‌کند.
activeforeground رنگ متن، زمانی که نشانگر ماوس بر روی دکمه قرار می‌گیرد، را مشخص می‌کند.
bd پهنای خط حاشیه (border) دکمه را مشخص می‌کند و مقدار پیش فرض آن 2 است.
bg رنگ پس زمینه در حالت عادی، را مشخص می‌کند.
command تابعی که هنگام کلیک کردن دکمه، باید فراخوانی شود.
fg رنگ پیش زمینه (متن) در حالت عادی، را مشخص می‌کند.
font فونت متن استفاده شده برای دکمه را مشخص می‌کند.
height ارتفاع دکمه، به صورت تعداد خطوط برای دکمه‌های متنی یا به صورت پیکسل برای دکمه‌های با تصویر، را مشخص می‌کند.
highlightcolor رنگ فوکوس زمانی که فوکوس به عنصر منتقل می‌شود.
image تصویری که بر روی دکمه به جای متن نمایش داده می‌شود.
justify نحوه نمایش متن چند خطی:

  • LEFT، برای تراز کردن هر خط به سمت چپ
  • CENTER، تراز خطوط به وسط
  • RIGHT، برای تراز هر خط به سمت راست
padx فاصله کناری از سمت چپ و راست متن، را مشخص می‌کند.
pady فاصله کناری از بالا و پایین متن، را مشخص می‌کند.
relif نوع لبه کناری را مشخص می‌کند. این خاصیت دارای مقادیر SUNKEN ،RAISED ،GROOVE و RIDGE است.
state قرار دادن مقدار DISABLED منجر به خاکستری شدن دکمه و غیر فعال شدن عملکرد آن می‌شود. این تنظیم در حالتی که ماوس بر روی دکمه قرار داشته باشد، مقدار ACTIVE خواهد داشت. مقدار پیش فرض NORMAL است.
underline مقدار پیش فرض 1- است. به معنی اینکه هیچ یک از حروف زیر خط نداشته باشند. مقادیر غیر منفی به معنی آن است که حرف مورد نظر در متن دارای زیرخط باشد.
width عرض دکمه، به صورت تعداد حروف برای نمایش متنی یا به صورت پیکسل برای نمایش تصویر، را مشخص می‌کند.
wraplength اگر مقدار مثبتی به آن انتساب یابد، خطوط به گونه‌ای شکسته می‌شوند تا در هر خط به این مقدار جا اشغال کنند.

توابع پر کاربرد برای این عنصر به شرح زیر است :

تابع شرح
flash باعث می‌شود رنگ دکمه چندین بار به حالت فعال و عادی تغییر کند. سپس رنگ آن به حالت اولیه خود بر می‌گردد. در حالتی که دکمه غیرفعال است، نادیده گرفته می‌شود.
invoke تابع دکمه (تابعی که در دستور command تنظیم شده است) را فراخوانی کرده و مقدار بازگشتی آن نیز بر می‌گرداند. اگر تابعی برای دکمه تغریف نشده باشد و یا دکمه غیرفعال باشد، این تابع نادیده گرفته می‌شود.

می‌خواهیم برنامه‌ای بنویسیم که وقتی نشانگر ماوس بر روی دکمه قرار گرفت یک پیغام و وقتی از آن خارج شد، پیغام دیگر در داخل دکمه نمایش داده شود. به کد زیر توجه کنید:

  1: import tkinter
  2: from tkinter import Button
  3: 
  4: window = tkinter.Tk()
  5: window.geometry('200x200')
  6: 
  7: button = Button(window, text='Hover Me!', width="20", height="3", bd='3')
  8: button.place(x='25', y='60')
  9: 
 10: def enter(event):
 11:     button.config(text='Mouse has entered!')
 12: 
 13: def leave(event):
 14:     button.config(text='Mouse has left!')
 15: 
 16: button.bind('<Enter>', enter)
 17: button.bind('<Leave>', leave)
 18: 
 19: button.mainloop()
 20: window.mainloop()

در باره خطوط 5-1 قبلاً توضیح داده‌ایم. در خط 7 یک دکمه ایجاد کرده و خاصیت‌های آن، از جمله عرض، ارتفاع، متن و ضخامت خط کناری آن را مقداردهی می‌کنیم. در خط 8 نیز با استفاده از تابع ()place مشخص می‌کنیم که دکمه در کجای پنجره اصلی قرار بگیرد. در خطوط 14-10 دو تابع ()enter و ()leave تعریف کرده‌ایم که به ترتیب هنگام وارد شدن نشانگر ماوس به دکمه و خارج شدن از آن فراخوانی و فعال می‌شوند. این دو تابع را با استفاده از تابع ()bind به ترتیب به رویدادهای Enter و Leave متصل می‌کنیم (خطوط 16 و 17).حال برنامه را اجرا کنید. مشاهده می‌کنید که با قرار گرفتن نشانگر ماوس بر روی کنترل button خاصیت text آن تغییر می‌کند. و از طرف دیگر وقتی که نشانگر از کنترل دکمه دور می‌شود این خاصیت دوباره تغییر می‌کند:
button-in-tkinter-01

button-in-tkinter-02