آموزش مدیریت سیگنال در PyGTK

3 سال پیش

آموزش مدیریت سیگنال در PyGTK

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش مدیریت سیگنال در PyGTK خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش پروژه محور پایتون

بر خلاف یک برنامه حالت کنسول، که به صورت متوالی اجرا می شود، یک برنامه مبتنی بر رابط کاربری گرافیکی مبتنی بر رویداد است. تابع () gtk.main یک حلقه بی نهایت را شروع می کند. رویدادهای رخ داده در GUI به توابع مناسب فراخوانی منتقل می شوند.

هر ویجت PyGTK، که از کلاس GObject گرفته شده است ، به گونه ای طراحی شده است که در پاسخ به یک یا چند رویداد، سیگنال منتشر کند. سیگنال به خودی خود هیچ عملی انجام نمی دهد. در عوض، آن را به یک تابع callback متصل می کند.

برخی از سیگنال ها توسط ویجت به ارث می رسند، در حالی که برخی از سیگنال ها مخصوص ویجت هستند. به عنوان مثال، سیگنال “toggled” توسط ویجت toggleButton منتشر می شود.

یک کنترل کننده سیگنال با فراخوانی متد ()connect کلاس gtk.widget تنظیم می شود.

handler_id = object.connect(name, func, func_data)

 

  • اولین آرگومان، نام رشته ای است که حاوی نام سیگنالی است که می خواهید دریافت کنید.
  • دومین آرگومان، func ، تابع فراخوانی است که می خواهید هنگام گرفتن فراخوانی شود.
  • سومین آرگومان، func_data ، داده هایی است که می خواهید به این تابع منتقل شود.
  • شناسه کنترل کننده که برای شناسایی منحصر به فرد روش بازخوانی استفاده می شود.

به عنوان مثال، برای فراخوانی تابع ()onClicked  هنگام کلیک روی دکمه، از نحو زیر استفاده کنید –

def onClicked(widget, data=None):

 

تابع () onClicked به این صورت تعریف شده است –

def onClicked(self, widget, data=None):

 

اگر روش فراخوانی یک روش شی است، خود را به عنوان یک آرگومان اضافی دریافت می کند –

def onClicked(self, widget, data=None):

 

مثال

در مثال زیر، یک دکمه به gtk.Window اضافه می شود. با کلیک روی دکمه پیام “Hello World” چاپ می شود.

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("clicked",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):
      print "hello",self.entry.get_text()
PyApp()
gtk.main()

 

کد بالا را از طریق Python اجرا کنید. خروجی زیر نمایش داده می شود –

Signal Handling

با فشردن دکم ، خروجی زیر روی کنسول نمایش داده می شود

Hello TutorialsPoint

 

منبع.

 

لیست جلسات قبل آموزش PyGTK

  1. آموزش PyGTK
  2. معرفی PyGTK
  3. آموزش محیط  PyGTK
  4. آموزش Hello World در  PyGTK
  5. آموزش کلاس های مهم در  PyGTK
  6. آموزش کلاس پنجره در PyGTK
  7. آموزش کلاس دکمه در PyGTK
  8. آموزش کلاس لیبل در PyGTK
  9. آموزش کلاس ورود در PyGTK
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه