آموزش کلاس DrawingArea در PyGTK

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

 آموزش کلاس DrawingArea در PyGTK

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

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

ویجت DrawingArea یک بوم خالی حاوی gtk.gdk ارائه می دهد. پنجره ای که روی آن اشیاء مانند خط ، مستطیل ، قوس و غیره قابل ترسیم هستند.

PyGTK از کتابخانه Cairo برای چنین عملیات ترسیم استفاده می کند. Cairo یک کتابخانه گرافیکی بردار دو بعدی محبوب است. این کتاب به زبان C. نوشته شده است، گرچه در اکثر زبانها مانند C ++ ، Java ، Python ، PHP و غیره دارای پیوند است. از کتابخانه Cairo می توان برای ترسیم دستگاههای خروجی استاندارد در سیستم عامل های مختلف استفاده کرد. همچنین می تواند برای ایجاد PDF ، SVG و فایل های پس از اسکریپت استفاده شود.

به منظور انجام عملیات مختلف طراحی، باید دستگاه را روی متن شیء خروجی هدف واکشی کنیم. در این مورد از آنجا که نقاشی روی ویجت gtk.DrawingArea ظاهر می شود، زمینه دستگاه gdk. پنجره داخل آن به دست می آید. این کلاس دارای متد ()cairo-create است که زمینه دستگاه را برمی گرداند.

area = gtk.DrawingArea()
dc = area.window.cairo_create()

 

ویجت DrawingArea را می توان بر اساس سیگنال های زیر که از آن ساطع می شود ، به فراخوان ها متصل کرد –

Realize برای انجام هرگونه اقدام لازم هنگامی که ویجت بر روی یک صفحه خاص نصب شده است.
configure_event برای انجام هرگونه اقدام لازم هنگام تغییر اندازه ویجت.
expose_event برای رسیدگی مجدد به ترسیم محتویات ویجت هنگامی که یک ناحیه نقاشی ابتدا روی صفحه می آید، یا هنگامی که توسط یک پنجره دیگر پوشانده می شود و سپس باز می شود.

از رویدادهای Mouse and Keyboard نیز می توان برای فراخوانی callback ها با روش ()add_events  کلاس gtk.Widget استفاده کرد.

از اهمیت ویژه ای برخوردار است سیگنال رویداد نمایان شده که هنگام ظهور اولین بوم DrawingArea منتشر می شود. روشهای مختلف ترسیم اشیاء دو بعدی که در کتابخانه Cairo تعریف شده است از طریق این فراخوانی متصل به سیگنال رویداد نمایان می شود. این روشها اشیاء مربوطه را در زمینه دستگاه Cairo ترسیم می کنند.

موارد زیر روشهای ترسیم موجود است –

  • dc. rectangle (x، y، w، h) – این یک مستطیل در مختصات بالا سمت چپ مشخص شده و دارای عرض و ارتفاع givwn است.
  • dc.arc (x، y، r، a1، a2) – این یک قوس دایره ای با شعاع داده شده و دو زاویه می کشد.
  • dc.line (x1 ، y1 ، x2 ، y2) – این یک خط بین دو جفت مختصات را ترسیم می کند.
  • dc.line_to (x، y) – این یک خط را از موقعیت فعلی به (x ، y) ترسیم می کند
  • dc.show_text (str) – رشته را در موقعیت مکان نما کنونی ترسیم می کند
  • ()dc.stroke  – طرح کلی را ترسیم می کند
  • ()dc.fill  – شکل را با رنگ فعلی پر می کند
  • dc.set_color_rgb (r، g، b) – رنگ را به صورت کلی تنظیم می کند و با مقدار r ، g و b بین ۰٫۰ تا ۱٫۰ پر می کند

مثال کلاس DrawingArea در PyGTK

اسکریپت زیر اشکال مختلف را ترسیم می کند و با استفاده از روش های Cairo آزمایش می کند.

import gtk
import math

class PyApp(gtk.Window):
   
   def __init__(self):
      super(PyApp, self).__init__()
      
      self.set_title("Basic shapes using Cairo")
      self.set_size_request(400, 250)
      self.set_position(gtk.WIN_POS_CENTER)
      
      self.connect("destroy", gtk.main_quit)
        
      darea = gtk.DrawingArea()
      darea.connect("expose-event", self.expose)
        
      self.add(darea)
      self.show_all()
        
      def expose(self, widget, event):
      cr = widget.window.cairo_create()
        
      cr.set_line_width(2)
      cr.set_source_rgb(0,0,1)
      cr.rectangle(10,10,100,100)
      cr.stroke()
        
      cr.set_source_rgb(1,0,0)
      cr.rectangle(10,125,100,100)
      cr.stroke()
        
      cr.set_source_rgb(0,1,0)
      cr.rectangle(125,10,100,100)
      cr.fill()
        
      cr.set_source_rgb(0.5,0.6,0.7)
      cr.rectangle(125,125,100,100)
      cr.fill()
        
      cr.arc(300, 50, 50,0, 2*math.pi)
      cr.set_source_rgb(0.2,0.2,0.2)
      cr.fill()
        
      cr.arc(300, 200, 50, math.pi,0)
      cr.set_source_rgb(0.1,0.1,0.1)
      cr.stroke()
        
      cr.move_to(50,240)
      cr.show_text("Hello PyGTK")
      cr.move_to(150,240)
      cr.line_to(400,240)
      cr.stroke()

PyApp()
gtk.main()

 

اسکریپت فوق خروجی زیر را تولید می کند –

Basic Shapes Cairo

 

منبع.

 

لیست جلسات قبل آموزش 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
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه