آموزش تایم اوت در PyGTK

3 سال پیش
آموزش تایم اوت در PyGTK

 آموزش تایم اوت در PyGTK

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

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

ماژول gobject API PyGTK دارای یک عملکرد مفید برای ایجاد یک تابع timeout است که به صورت دوره ای فراخوانی می شود.

source_id = gobject.timeout_add(interval, function, …)

 

آرگومان دوم تابع callback است که می خواهید بعد از هر میلی ثانیه فراخوانی کنید که مقدار اولین فاصله  است. آرگومان های اضافی ممکن است به عنوان داده عملکرد به فراخوانی ارسال شود.

مقدار برگشتی این تابع source_id است. با استفاده از آن، قابلیت فراخوانی تابع callback متوقف می شود.

gobject.source_remove(source_id)

 

برای تکرار مجدد، تابع callback باید True را برگرداند. بنابراین، با بازگشت False می توان آن را متوقف کرد.

در برنامه زیر دو دکمه و دو برچسب روی پنجره سطح بالا قرار داده شده است. یک برچسب تعداد افزایشی را نمایش می دهد. btn1 on_click را فرا می خواند که تابع timeout را با فاصله ۱۰۰۰ میلی ثانیه (۱ ثانیه) تنظیم می کند.

btn1.connect("clicked", self.on_click)

def on_click(self, widget):
   self.source_id = gobject.timeout_add(1000, counter, self)

 

تابع timeout به عنوان ()counterنامگذاری شده است. بعد از هر ۱ ثانیه تعداد برچسب را افزایش می دهد.

def counter(timer):
   c=timer.count+1
   print c
   timer.count=c
   timer.lbl.set_label(str(c))
   return True

 

Callback در دکمه دوم تابع timeout را حذف می کند.

btn2.connect("clicked", self.on_stop)
def on_stop(self, widget):
gobject.source_remove(self.source_id)

 

مثال تایم اوت در PyGTK

در زیر کد کامل مثال Timeout است –

import gtk, gobject

def counter(timer):
      c = timer.count+1
      print c
      timer.count = c
      timer.lbl.set_label(str(c))
      return True
      class PyApp(gtk.Window):
        
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Timeout Demo")
      self.set_size_request(300, 200)
      self.set_position(gtk.WIN_POS_CENTER)
        
      vbox = gtk.VBox(False, 5)
      hbox = gtk.HBox(True, 3)
        
      hb = gtk.HBox()
      lbl1 = gtk.Label("Counter: ")
        
      hb.add(lbl1)
      self.lbl = gtk.Label("")
      hb.add(self.lbl)
      valign = gtk.Alignment(0.5, 0.5, 0, 0)
      valign.add(hb)
      vbox.pack_start(valign, True, True, 10)
        
      btn1 = gtk.Button("start")
      btn2 = gtk.Button("stop")
        
      self.count = 0
      self.source_id = 0
        
      hbox.add(btn1)
      hbox.add(btn2)
        
      halign = gtk.Alignment(0.5, 0.5, 0, 0)
      halign.add(hbox)
        
      vbox.pack_start(halign, False, True, 10)
      self.add(vbox)
        
      btn1.connect("clicked", self.on_click)
      btn2.connect("clicked", self.on_stop)
        
      self.connect("destroy", gtk.main_quit)
      self.show_all()
        
   def on_click(self, widget):
      self.source_id = gobject.timeout_add(1000, counter, self)
        
   def on_stop(self, widget):
      gobject.source_remove(self.source_id)

PyApp()
gtk.main()

 

هنگام اجرا پنجره دو دکمه را در پایین نشان می دهد. وقتی روی دکمه Start کلیک می شود ، تعداد برچسب به صورت دوره ای افزایش می یابد و با کلیک روی دکمه Stop، افزایش آن متوقف می شود.

خروجی را مشاهده کنید –

Timeout Demo

 

منبع.

 

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

  1. آموزش PyGTK
  2. معرفی PyGTK
  3. آموزش محیط  PyGTK
  4. آموزش Hello World در  PyGTK
  5. آموزش کلاس های مهم در  PyGTK
  6. آموزش کلاس پنجره در PyGTK
  7. آموزش کلاس دکمه در PyGTK
  8. آموزش کلاس لیبل در PyGTK
  9. آموزش کلاس ورود در PyGTK
  10. آموزش مدیریت سیگنال در PyGTK
  11. آموزش مدیریت رویداد در PyGTK
  12. آموزش کانتینر در PyGTK
  13. آموزش کلاس جعبه در PyGTK
  14. آموزش کلاس ButtonBox در PyGTK
  15. آموزش کلاس تراز در PyGTK
  16. آموزش کلاس EventBox در PyGTK
  17. آموزش کلاس Layout در PyGTK
  18. آموزش کلاس ComboBox در PyGTK
  19. آموزش کلاس ToggleButton در PyGTK
  20. آموزش کلاس CheckButton در PyGTK
  21. آموزش کلاس RadioButton در PyGTK
  22. آموزش MenuBar ،Menu و MenuItem در PyGTK
  23. آموزش کلاس نوار ابزار در PyGTK
  24. آموزش کلاس Adjustment در PyGTK
  25. موزش کلاس Range در PyGTK
  26. آموزش کلاس Scale در PyGTK
  27. آموزش کلاس Scrollbar در PyGTK
  28. آموزش کلاس Dialog در PyGTK
  29. آموزش کلاس MessageDialog در PyGTK
  30. آموزش کلاس AboutDialog در PyGTK
  31. آموزش کلاس FontSelection در PyGTK
  32. آموزش کلاس Color Selection در PyGTK
  33. آموزش دیالوگ انتخاب فایل در PyGTK
  34. آموزش کلاس نوت بوک در PyGTK
  35. آموزش کلاس فریم در PyGTK
  36. آموزش کلاس AspectFrame در PyGTK
  37. آموزش کلاس TreeView در PyGTK
  38. آموزش کلاس Paned در PyGTK
  39. آموزش کلاس نوار وضعیت در PyGTK
  40. آموزش کلاس ProgressBar در PyGTK
  41. آموزش کلاس Viewport در PyGTK
  42. آموزش کلاس ScrolledWindow در PyGTK
  43. آموزش کلاس Arrow در PyGTK
  44.  آموزش کلاس Image در PyGTK
  45. آموزش کلاس DrawingArea در PyGTK
  46. آموزش کلاس SpinButton در PyGTK
  47. آموزش کلاس تقویم در PyGTK
  48. آموزش کلاس کلیپ بورد در PyGTK
  49. آموزش کلاس خط کش در PyGTK
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه