آموزش تایم اوت در PyGTK
آموزش تایم اوت در PyGTK
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش تایم اوت در PyGTK خواهیم پرداخت.
پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون
ماژول gobject API PyGTK دارای یک عملکرد مفید برای ایجاد یک تابع timeout است که به صورت دوره ای فراخوانی می شود.
1 |
source_id = gobject.timeout_add(interval, function, …) |
آرگومان دوم تابع callback است که می خواهید بعد از هر میلی ثانیه فراخوانی کنید که مقدار اولین فاصله است. آرگومان های اضافی ممکن است به عنوان داده عملکرد به فراخوانی ارسال شود.
مقدار برگشتی این تابع source_id است. با استفاده از آن، قابلیت فراخوانی تابع callback متوقف می شود.
1 |
gobject.source_remove(source_id) |
برای تکرار مجدد، تابع callback باید True را برگرداند. بنابراین، با بازگشت False می توان آن را متوقف کرد.
در برنامه زیر دو دکمه و دو برچسب روی پنجره سطح بالا قرار داده شده است. یک برچسب تعداد افزایشی را نمایش می دهد. btn1 on_click را فرا می خواند که تابع timeout را با فاصله 1000 میلی ثانیه (1 ثانیه) تنظیم می کند.
1 2 3 4 |
btn1.connect("clicked", self.on_click) def on_click(self, widget): self.source_id = gobject.timeout_add(1000, counter, self) |
تابع timeout به عنوان ()counterنامگذاری شده است. بعد از هر 1 ثانیه تعداد برچسب را افزایش می دهد.
1 2 3 4 5 6 |
def counter(timer): c=timer.count+1 print c timer.count=c timer.lbl.set_label(str(c)) return True |
Callback در دکمه دوم تابع timeout را حذف می کند.
1 2 3 |
btn2.connect("clicked", self.on_stop) def on_stop(self, widget): gobject.source_remove(self.source_id) |
مثال تایم اوت در PyGTK
در زیر کد کامل مثال Timeout است –
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
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، افزایش آن متوقف می شود.
خروجی را مشاهده کنید –
لیست جلسات قبل آموزش PyGTK
- آموزش PyGTK
- معرفی PyGTK
- آموزش محیط PyGTK
- آموزش Hello World در PyGTK
- آموزش کلاس های مهم در PyGTK
- آموزش کلاس پنجره در PyGTK
- آموزش کلاس دکمه در PyGTK
- آموزش کلاس لیبل در PyGTK
- آموزش کلاس ورود در PyGTK
- آموزش مدیریت سیگنال در PyGTK
- آموزش مدیریت رویداد در PyGTK
- آموزش کانتینر در PyGTK
- آموزش کلاس جعبه در PyGTK
- آموزش کلاس ButtonBox در PyGTK
- آموزش کلاس تراز در PyGTK
- آموزش کلاس EventBox در PyGTK
- آموزش کلاس Layout در PyGTK
- آموزش کلاس ComboBox در PyGTK
- آموزش کلاس ToggleButton در PyGTK
- آموزش کلاس CheckButton در PyGTK
- آموزش کلاس RadioButton در PyGTK
- آموزش MenuBar ،Menu و MenuItem در PyGTK
- آموزش کلاس نوار ابزار در PyGTK
- آموزش کلاس Adjustment در PyGTK
- موزش کلاس Range در PyGTK
- آموزش کلاس Scale در PyGTK
- آموزش کلاس Scrollbar در PyGTK
- آموزش کلاس Dialog در PyGTK
- آموزش کلاس MessageDialog در PyGTK
- آموزش کلاس AboutDialog در PyGTK
- آموزش کلاس FontSelection در PyGTK
- آموزش کلاس Color Selection در PyGTK
- آموزش دیالوگ انتخاب فایل در PyGTK
- آموزش کلاس نوت بوک در PyGTK
- آموزش کلاس فریم در PyGTK
- آموزش کلاس AspectFrame در PyGTK
- آموزش کلاس TreeView در PyGTK
- آموزش کلاس Paned در PyGTK
- آموزش کلاس نوار وضعیت در PyGTK
- آموزش کلاس ProgressBar در PyGTK
- آموزش کلاس Viewport در PyGTK
- آموزش کلاس ScrolledWindow در PyGTK
- آموزش کلاس Arrow در PyGTK
- آموزش کلاس Image در PyGTK
- آموزش کلاس DrawingArea در PyGTK
- آموزش کلاس SpinButton در PyGTK
- آموزش کلاس تقویم در PyGTK
- آموزش کلاس کلیپ بورد در PyGTK
- آموزش کلاس خط کش در PyGTK
دیدگاه شما