المحتويات

الخطوات الأولى فى Mono Winforms

فى هذا الجزء من الدرس سوف يتم شرح بعض الأمثلة البسيطة لبرامج مكتوبة بواسطة مكتبات WinForms.

مثال بسيط

مثال على تطبيق بمكتبات WinForms.

simple.py

#!/usr/bin/ipy

import clr

clr.AddReference("System.Windows.Forms")

from System.Windows.Forms import Application, Form

class IForm(Form):

    def __init__(self):
        self.Text = 'Simple'
        self.Width = 250
        self.Height = 200
        self.CenterToScreen()

Application.Run(IForm())

`هذا المثال يعرض نافذة صغيرة على الشاشة.

 clr.AddReference("System.Windows.Forms")

هنا أضفنا مرجعية لمكتبات WinForms.

 class IForm(Form):

فى مكتبات WinForms أى نافذة أو مربع حوارى هو عبارة عن From و هذه الأداة عبارة عن حاوى بسيط و الغرض منه عرض أدوات أخرى بداخله. قمنا بتوريث الفئة IForm من Form لذلك أصبحت هى نفسها From.

 self.Text = 'Simple'
 self.Width = 250
 self.Height = 200

النص (Text) و العرض (Width) و الإرتفاع (Height) هم خصائص الــForm فى السطر الأول سوف نعرض النص "Simple ” فى شريط العنوان و فى السطرين الآخرين سوف يتم تحجيم الForm

بحجم 200ْx250 بكسل.

 self.CenterToScreen()

هذه الطريقة تقوم بتوسيط النافذة فى منتصف الشاشة.

 Application.Run(IForm())

فى هذا السطر قمنا بتشغيل البرنامج..


Simple

Figure: Simple

الأيكونة

Mono تعنى القرد فى الأسبانية لذلك لو لم نغير الأيكونة فهناك أيكونة افتراضىة و هو رأس القرد و فى المثال القادم سوف يتم شرح كيفية تغيير الأيكونة.

icon.py

#!/usr/bin/ipy

import clr
import sys

clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

from System.Windows.Forms import Application, Form
from System.Drawing import Icon

class IForm(Form):

    def __init__(self):
        self.Text = 'Icon'
        self.Width = 250
        self.Height = 200
        
        try:
            self.Icon = Icon("web.ico")
        except Exception, e:
            print e.msg
            sys.exit(1)       
        
        self.CenterToScreen()

Application.Run(IForm())

الكود السابق بيعرض الأيكونة فى الركن الأيسر من النافذة و عموماً الأيكونة هى التى تمثل النافذة فى شريط المهام و أيضاً تظهر على شريط التحكم .

 clr.AddReference("System.Drawing")



فى الكود السابق أضفنا مرجعية للوحدة Sysrem.Drawing لأن كائن الأيكونة (Icon Object) موجود فى هذه الوحدة.

 try:
     self.Icon = Icon("web.ico")
 except Exception, e:
     print e.msg
     sys.exit(1)  

من الأفضل وضح كل أكواد الإدخال و الإخراج بين الكلمات المحجوزة try/except لتحاشى الأخطاء و أيضاً لا بد من وجود ملف الأيكونة فى نفس ملف العمل الموجود به الاسكربت الذى يحتوى على الكود.


Icon

Figure: Icon

التلميحات

التليمح عبارة عن مستطيل يظهر و يعرض وصف بسيط عن عمل الأداة فى التطبيق عندما يثبت المستخدم مؤشر الفأرة على الأداة لفترة بسيطة.

tooltips.py

#!/usr/bin/ipy

import clr

clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

from System.Windows.Forms import Application, Form
from System.Windows.Forms import Button, ToolTip
from System.Drawing import Point, Size

class IForm(Form):

    def __init__(self):
        self.Text = 'Tooltips'
        self.CenterToScreen()
        self.Size = Size(200, 150)

        tooltip = ToolTip()
        tooltip.SetToolTip(self, "This is a Form")

        button = Button()
        button.Parent = self
        button.Text = "Button"
        button.Location = Point(50, 70)

        tooltip.SetToolTip(button, "This is a Button")


Application.Run(IForm())

فى الكود السابق أنشأنا تلميح لكل من نافذة و زر.

 tooltip = ToolTip()

هنا أنشأنا كائن تلميح و سوف نستخدمه لعمل تلميح لكل من النافذة و الزر

 tooltip.SetToolTip(self, "This is a Form")

هنا قمنا بعمل تلميح للفورم.

 tooltip.SetToolTip(button, "This is a Button")

و هنا للزر.

 button = Button()
 button.Parent = self
 button.Text = "Button"
 button.Location = Point(50, 70)

لاحظ عند إنشاء أداة الزر الخاصية Parent هى حاوى هذا الزر حيث سيظهر و الخاصية Text هى النص الذى سيظهر على الزر أما الخاصية Location فهى تقوم بتحديد موقع الزر على النافذة و فى المثال كان موقع الزر فى الإحداثيات س=30 و ص=70 (بكسل) بالنسبة للنافذة.


Tooltips

Figure: Tooltips

الزر

فى المثال الأخير تكلمنا عن أداة الزر .

button.py

#!/usr/bin/ipy

import clr

clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

from System.Windows.Forms import Application, Form, Button
from System.Drawing import Size, Point

class IForm(Form):

    def __init__(self):
        self.Text = 'Button'
        self.CenterToScreen()
        self.Size = Size(200, 150)

        btn = Button()
        btn.Parent = self
        btn.Text = "Quit"
        btn.Location = Point(50, 50)
        btn.Click += self.OnClick
        btn.MouseEnter += self.OnEnter


    def OnClick(self, sender, args):
        self.Close()

    def OnEnter(self, sender, args):
        print "button entered"


Application.Run(IForm())

عموماً برمجية الواجهات الرسومية بنتحكم فيها عن طريق الأحداث و فى المثال السابق قمنا بعرض زر داخل حاوى Form و الزر سوف يستجيب لحدثين هما النقر Click و دخول المؤشر على الزر MouseEnter.

 btn.Click += self.OnClick

السطر السابق من الكود ربطنا مرر الحدث بالحدث Click و لذلك عند النقر على الزر بيتم استدعاء الدالةOnClick().

 btn.MouseEnter += self.OnEnter

عندما نمرر مؤشر الفأرة على الزر فإن الحدث MouseEnter يعمل , و بالتالى سوف يستدعى الدالة OnEnter().

 def OnClick(self, sender, args):
     self.Close()

الطريقة السابقة سوف تغلق التطبيق.

 def OnEnter(self, sender, args):
     print "button entered"

عند مرور مؤشر الفأرة على الزر سوف يتم طباعة الجملة "button entered” داخل شاشة الطرفية (سطر الأوامر).

أخيراً فى هذا الجزأ من الدرس تم شرح بعض الأمثلة لنبدأ فى البرمجة الرسومية بمكتبات WinForms.


المحتويات