همانگونه که گفتیم، برنامه نویسی GUI با Tkinter به شیوه رویداد گرا است به این گونه که با برز یک رویدا، یک واکنش باید انجام شود. Event Loop هماره به درخواست های ورودی گوش می دهد و با ورود درخواستی تازه، آن درخواست را به پاسخ دهنده خودش می فرستد. یکی از این رویدادها، زمانی است که دگمه ای کلیک شود.

شناساندن دگمه و کلاس Button

در Tkinter با کلاس Button یک دگمه را در برنامه می سازیم که پارامتر یکم آن، نام متغیری است که دگمه را می خواهیم به آن و به کمک متد ()pack بچسبانیم. همچنین همانند Label می توانیم نوشته روی دگمه را با پارامتر text در تابع سازنده نشان دهیم. در کد زیر یک برچسب و یک دگمه ساخته ایم و در متد ()pack هر یک از آنها، پارامتر side برابر با LEFT است، بنابراین چون نخست برچسب با متد ()pack چسبانده شده، پس Label در چپ ترین و سپس به دنبال آن دگمه گداشته می شود.

اداره کردن رویداد کلیک دگمه ها Tkinter

در متد  سازنده از کلاس Button پارامتری به نام command هست که نام تابعی را دریافت می کند که قرار است در واکنش به کلیک شدن دگمه، انجام شود. در زیر بخشی از کد بالا (خط ۱۵) را می بینید که نام تابع button1_clicked به پارامتر command فرستاده شده است، بنابراین هر زمان که این دگمه کلیک شود، پس این تابع انجام خواهد شد.

تغییر متن برچسب با کلیک روی دگمه

همانگونه که گفتیم با متدهای ()config یا ()configure از کلاس های ویجت همانند Label و Button می توانیم ویزگی های یک ویجت را تغییر دهیم. در کد زیر بدنه تابع ()button1_clicked را می بینید که در آن و در متد ()configure از برچسب، نوشته آن برچسب تغییر می کند. شکل زیر این را نشان می دهد که پیش از کلیک دگمه نوشته برچسب رشته Tkinter و پس از کلیک به رشته Cliked تغییر کرده است.

نوشتن یک دگمه برای بستن برنامه

برای آنکه با کلیک روی یک دگمه، برای نمونه به نام Close برنامه را ببندیم باید متد ()destroy از کلاس Tk را فراخوانی کنیم. توجه کنید در ساخت برنامه های GUI نخستین گام، ساخت نمونه ای از کلاس Tk است، زیرا همه ویجت های دیگر مانند Label و Button و Frame بر روی پنجره ریشه برنامه که از کلاس Tk است، چسبانده می شوند. سپس در واپسین بند (خط) از کد، متد mainloop فراخوانی می شود. بنابراین برای بستن یک برنامه باید Event Loop که به کمک متد ()mainloop ساخته شده است را ببندیم و برای این به کمک متغیری که به پنجره ریشه برنامه (در اینجا متغیر main_window) اشاره می کند، متد ()destroy از کلاس Tk فراخوانی می شود.

در کد زیر و در بندهای ۶ و ۷ تابعی به نام ()close را نوشته ایم که نام در تابع سازنده دگمه button2 به پارامتر command فرستاده شده است. نوشته روی دگمه button2 را فارسی و رشته بستن نشان داده ایم. بنابراین هرگاه روی دگمه button2 یا بستن کلیک شود، پس تابع  ()close فراخوانی شده و از این رو، متد ()destroy نیز فراخوانی می شود. همچنین توجه کنید که ما به هر کدام از سه ویجت label1 و button1 و button2 یک سو (بالا – چپ – راست) را داده ایم.