آموزش مدیریت رویداد در PyGTK
آموزش مدیریت رویداد در PyGTK
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش مدیریت رویداد در PyGTK خواهیم پرداخت.
پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون و جنگو
علاوه بر مکانیزم سیگنال، رویدادهای سیستم پنجره نیز می توانند به توابع فراخوانی متصل شوند. تغییر اندازه پنجره، فشار دادن کلید، رویداد پیمایش و غیره برخی از رویدادهای رایج سیستم پنجره هستند. این رویدادها به حلقه اصلی برنامه گزارش می شود. از آنجا ، آنها از طریق سیگنال ها به توابع تماس گیرنده منتقل می شوند.
برخی از رویدادهای سیستم در زیر ذکر شده است –
- button_press_event
- button_release_event
- scroll_event
- motion_notify_event
- delete_event
- event_event
- expose_event
- key_press_event
- key_release_event
روش ()connect برای ارتباط دادن رویداد با تابع callback از نحو زیر استفاده می شود –
1 |
Object.connect(name, function, data) |
در اینجا، نام مخفف رشته مربوط به نام رویدادی است که باید ضبط شود. و تابع نام تابع callback است که هنگام وقوع یک رویداد فراخوانی می شود. داده استدلالی است که باید به تابع callback منتقل شود.
بنابراین کد زیر یک ویجت Button را متصل می کند و رویداد button_press را ضبط می کند –
1 |
self.btn.connect("button_press_event", self.hello) |
در زیر نمونه اولیه تابع ()hello خواهد بود –
1 |
def hello(self,widget,event): |
مثال
در زیر کد کنترل کننده رویداد دکمه است –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import gtk class PyApp(gtk.Window): def __init__(self): super(PyApp, self).__init__() self.set_title("Hello World in PyGTK") self.set_default_size(400,300) self.set_position(gtk.WIN_POS_CENTER) self.label = gtk.Label("Enter name") self.entry = gtk.Entry() self.btn = gtk.Button("Say Hello") self.btn.connect("button_press_event", self.hello) fixed = gtk.Fixed() fixed.put(self.label, 100,100) fixed.put(self.entry, 100,125) fixed.put(self.btn,100,150) self.add(fixed) self.show_all() def hello(self,widget,event): print "hello",self.entry.get_text() PyApp() gtk.main() |
وقتی کد بالا را اجرا می کنید، خروجی زیر را روی کنسول نمایش می دهد –
1 |
Hello TutorialsPoint |
دیدگاه شما