الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مرجع عربي للمكتبة الرسومية tkinter

بدأه ♥ حُوريّة ♥ في 13 مارس 2011 · 7 رد · 10,298 مشاهدة · في قسم Cross Platform GUI Libraries العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

post-140583-005234700 1299984221_thumb.g

بسم الله الرحمن الرحيم

post-140583-078328100 1299984776_thumb.p

المكتبة الرسومية

Tkinter

مع Python 3

السلام عليكم ورحمة الله

سأكون متفرغة بالأيام المقبلة إن شا الله, وبما أنني أقوم بتدوين ودراسة tkinter مع Python 3 سأقوم بتلخيص وكتابة دروس نافعة هنا بالقسم. القسم نايم قليلاً

سأقوم لاحقاً بكتابة الهيكلة العامة للدورة بمشاركة مستقلة بعد دراستهن, أو بطريقة جدول

وقبل البدء رجاءً مراجعة الموضوع التالي لأننا سنبدأ مباشرة بالمكتبة الرسومية tkinter وليس لغة 3 Python

مدخل إلى Python

أو القراءة عن لغة Python 3 من أي مصدر آخر.

♥ملاحظة:نستطيع المشاركة بالموضوع وكتابة دروس أو أي شيء نعرفه عن الـ tkinter .

ولكن بتعبير جيد وتنسيق مناسب happy.gif

الدورة تثقيفية عربية فقط

أطيب المُنى ♥

post-140583-005234700 1299984221_thumb.g

دروس مش مقالة!

المرفقات
3c9403f.gif113418-glowing-purple-neon-icon-culture-holiday-witch-hat.png

تم تعديل هذه المشاركة بواسطة ♥ حُوريّة ♥ في 13 مارس 2011 في 06:01

1

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#2

بسم الله الرحمن الرحيم

قبل البدء بجدول الدروس وهيكل الدورة, ولكي نتعرف من خلال الصورة التالية الواضحة أمامنا

على tkinter , المكتبة الرسومية. وأثناء التطبيق الفعلي والجاد مع بيئة Python المكتوبة بالكامل باستعمال

هذه المكتبة الرسومية tkinter . لا يخفى على أحدنا هذه الصورة خصوصاً من لديه التجربة المسبقة مع لغة Python

post-140583-037012200 1300254453_thumb.p

بيئة Python مكتوبة باستعمال الواجهة الرسومية tkinter

ما نشاهده امامنا من زرارات ونوافذ وقوائم بالصورة السابقة هو باستعمال المكتبة الرسومية GUI المعروفة بـ tkinter.

والتي هي موضوعنا هنا في هذه الدروس.

آسفة سيكون الموضوع تدريجي وعلى مهلنا

أطيب المُنى

المرفقات
tkinterPy.png
2

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#3

متابع وشكرا لكى اختى رغد

2

GoodBye

#4

بسم الله الرحمن الرحيم

التعريف بـ tkinter

لغة Python هنا في هذه الدروس هي لغة Python النسخة الثالثة Python3.

الدروس هنا للمستوى المتوسط هذا يعني أنني متوقعة الإلمام ببعض المصطلحات

التقنية متل GUI ونحوها.

- ماهي tkinter؟

الـ tkinter عبارة عن واجهة رسومية GUI مشتقة من مكتبة Tk GUI الرسومية للعمل معها بواسطة لغة Python. وهي الواجهة الرسومية القياسية والرسمية للغة Python, مما يجعلها حزمة رسومية متاحة للعمل عند تثبيت بيئة Python. بالإضافة إلى أنها الواجهة الرسومية المستعملة لنوافذ بيئة python مثل الموجودة هنا بمشاركتي الثانية.

- مثال الترحيب Hello World:

سنفهم الكثير بواسطة هذا البرنامج النموذجي من وثائق المساعدة الرسمية بلغة Python وهو برنامج ترحيبي متقدم نوعاً ما ولكن سيكون مثالنا في معظم المشاركات للتعرف اكتر على tkinter عن قُرب. وسينتهي بنا إلى حصيلة معرفية جيدة جداً بهذه الواجهة الرسومية.

خطوات تنفيذ البرنامج:

- إنشاء ملف hello.py ونسخ الكود التالي فقط وحفظه وتطبيقه.

from tkinter import *

class Application(Frame):
    	def say_hi(self):
        	print("hi there, everyone!")

    	def createWidgets(self):
        	self.QUIT = Button(self)
        	self.QUIT["text"] = "QUIT"
        	self.QUIT["fg"] = "red"
        	self.QUIT["command"] = self.quit

        	self.QUIT.pack({"side": "left"})

        	self.hi_there = Button(self)
        	self.hi_there["text"] = "Hello",
        	self.hi_there["command"] = self.say_hi

        	self.hi_there.pack({"side": "left"})

    	def __init__(self, master=None):
        	Frame.__init__(self, master)
        	self.pack()
        	self.createWidgets()

root = Tk()
app = Application(master=root)
app.mainloop()
root.destroy()

post-140583-022379800 1305011631_thumb.p

صورة البرنامج اثناء التطبيق

اثناء التطبيق سنكون عرفنا كل شيء عن (ماهيّة) tkinter وعن مفهوم الـ GUI بصفة عامة. مع الأخذ بالإعتبار أنها لا تتوقف عند هذه الحدود وهذا النوع من التطبيق.

تنويه:

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

وتلك الأشياء والسطور سنتعرف عليها لاحقاً إن شاء الله...

أطيب المُنى

سبب التعديل: تنسيق الكود

المرفقات
Screenshot.png

تم تعديل هذه المشاركة بواسطة ♥ حُوريّة ♥ في 12 مايو 2011 في 10:32

1

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#5

موضوع رائع

اشكرك جزيل الشكر بصراحه اول مره اعرف بان بايثون لها مكتبة واجهات قياسية

وفقك الله لكل خير وبصراحه بايثون تعتبر لغة قوية الا ان عيبها البطئ

1
#6

السلام عليكم ورحمة الله وبركاته

تقسيم المثال السابق إلى ثلاث اقسام رئيسية

دعونا نقسّم الكود السابق أو بالأحرى الملف البرمجي السابق للبرنامج الترحيبي إلى أقسامه الرئيسية النموذجية المعروفة لأي ملف برمجي مكتوب بلغة Python وخصوصاً بتقنية OOP.

هي مجرد ثلاث اقسام رئيسية فقط

القسم الأول هو تضمين (جلب) كل ما يلزم من الـ module الخاص بـ tkinter بواسطة العبارة from...import

from tkinter import *

وكما نعرف أن علامة النجمة هي تعني كل الموجود بداخل هذا الـ module من دوال أو كائنات وما إلى ذلك. وهذا السطر هو كل ما يلزم للعمل قاعدياً مع المكتبة الرسومية tkinter.

القسم الثاني هو عبارة عن class مُسمّى بـ Application, وسيرث كل شيء من الأب Frame والذي هو عبارة عن class معروف مسبقاً ضمن الـ module الخاص بـ tkinter. مثله مثل الكثير من الكائنات الرسومية الأخرى متل Button على سبيل المثال.

class Application(Frame):
    def say_hi(self):
        print("hi there, everyone!")

    def createWidgets(self):
        self.QUIT = Button(self)
        self.QUIT["text"] = "QUIT"
        self.QUIT["fg"] = "red"
        self.QUIT["command"] = self.quit

        self.QUIT.pack({"side": "left"})

        self.hi_there = Button(self)
        self.hi_there["text"] = "Hello",
        self.hi_there["command"] = self.say_hi

        self.hi_there.pack({"side": "left"})

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

القسم الثالث هو مجموعة اسطر لإنشاء الكائنات وعمل التحضيرات اللازمة المطلوبة والضرورية لأي برنامج معمول بواسطة tkinter.

root = Tk()
app = Application(master=root)
app.mainloop()
root.destroy()

حسناً, السطر الأول من القسم الثالث هذا,هو سطر ضروري جداً وهو عبارة عن إنشاء النافذة الجذر أو النافذة الإم بتعبير آخر والتي هي عبارة عن نافذة رئيسية ضرورية لكل برنامج معملول بواسطة tkinter وتُسمى اختيارياً بـ root وهي عبارة عن كائن من Tk والذي هو عبارة عن class ايضاً ضمن مجموعة tkinter.

السطر الذي يليها تماماً هو إنشاء كائن باسم app من الكلاس المعمول بواسطتنا نحن وهو Application وهو عبارة عن وريث فقط من الـ frame ولكن اضفنا له خصائص جديدة وشكل معين وزرارات لعمل ما يلزم من طباعة نصوص ترحيبية أو إغلاق النافذة بالكامل.

نلاحظ أن هناك مقترح argument وهو master = root والذي يقوم بتعيين هذا الـ frame إلى النافذة الرئيسية root (الضرورية لكل برنامج) بالسطر الأول.

ثم يأتي بعد ذلك استعمال الدالة الموروثة من الـ Frame وهي mainloop والتي ستقوم بمتابعة سير البرنامج بالكامل ومراقبته اثناء تفاعل المستخدم مع البرنامج, مثلا مراقبة الأحداث event على سبيل المثال.

ثم يأتي السطر الأخير ببساطة وهو المسؤول عن حدف وتنظيف كل شيء كان للبرنامج في الزاكرة بعد الإنتهاء منه

سيتبقى علينا إن شاء الله بعض التفاصيل داخل الـ Application ومحتوياته للنظر إلى مكونات وآليات ضرورية تتعلق بـ tkinter وكيفية إنشائها والتعامل معها.

آسفة للتأخير: بالكاد اجد وقت للكتابة او القراءة والمراجعة.

أطيب الأمنيات

2

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#7

شرح الجزء الثاني من الكود والمتبقي من المثال الرئيسي للموضوع

شرح تفاصيل ضرورية ورئيسية لكل برنامج معمول بواسطة tkinter

في هذه المشاركة سنكون مهتمين فقط بـ Application وهو الـ class الوارث من Frame . والموجود بالكود التالي:

class Application(Frame):
    def say_hi(self):
        print("hi there, everyone!")

    def createWidgets(self):
        self.QUIT = Button(self)
        self.QUIT["text"] = "QUIT"
        self.QUIT["fg"] = "red"
        self.QUIT["command"] = self.quit

        self.QUIT.pack({"side": "left"})

        self.hi_there = Button(self)
        self.hi_there["text"] = "Hello",
        self.hi_there["command"] = self.say_hi

        self.hi_there.pack({"side": "left"})

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

ينقسم هذا الجزء إلى ثلاثة أجزاء وهي عبارة عن مجموعة دوال Methods ...

  def say_hi(self):
def createWidgets(self):
def __init__(self, master=None):

الدالة الأولى: مسؤولة عن أوامر لطباعة جملة ترحيبية على الشاشة فقط.(لذلك لن نشرحها)

الدالة التانية: ستكون مسؤولة وستتولى أمر إنشاء وتصفيف وتعيين الخصائص للكائنات.

الدالة التالتة: هي دالة الإنشاء الإستهلالية والنموذجية لإنشاء الكائن frame لاحقاً.

داخل الدالة التانية createWidgets.

الكائن Frame الإطار والحاوية:

يحتوي هذا الجزء من الكود على العديد من الأشياء الضرورية لبناء, لرؤية, ولتصفيف الكائنات الرسومية في أي نافذة وبرنامج مكتوب باستعمال tkinter.

بعد أن عرفنا أن لكل برنامج نافذة رئيسية(النافذة الأم) الحاضنة لكل اجزاء البرنامج المرئية متل الزرارات والإطارات والحقول...إلخ

يتبقى علينا معرفة نافذة تقوم بدور الحاوية بتعبير آخر, وباستعمالها نستطيع ضم كل الأجزاء المرئية في هذه النافذة وهي Frame أداة الإطار.

ملاحظة: لكل برنامج نافذة الرئيسية فقط بينما نستطيع عمل وتضمين اكتر من حاوية Frame بالبرنامج.هذا يعني مجموعة إطارات تحتوي على مجموعة أدوات وكائنات رسومية مرئية اخرى.

من الكود السابق Application عبارة عن Frame ببساطة بدون كلمة وارث ووراثة, وسيكون هو الإطار الحاوي للزرار QUIT والزرار المسؤول عن طباعة النص الترحيبي وهو say_hi.

self.QUIT = Button(self)
self.hi_there = Button(self)

نلاحظ طريقة إنشاء الكائنات المرئية من tkinter بسيطة للغاية ببساطة للغة python وبطريقة python اللغوية في إنشاء الكائنات عموماً. ليس هنا أي قوانين خارجة عن لغة Python.

خصائص الكائنات:

كما هو معروف في الحياة الواقعية وفي البرمجيات ايضاً لكل كائن خصائص معينة متل اللون الطول الوزن ووو. ايضاً لكائنات tkinter متل Button خصائص معينة متل النص المعروض للمستخدم, لون النص وكثير

من الشكليات والمظهر. لنتاول من المثال السابق الزرار الخاص بعملية الخروج من البرنامج وهو QUIT من الجزء التاني.

 self.QUIT["text"] = "QUIT"
self.QUIT["fg"] = "red"

نلاحظ طريقة الوصول إلى خصائص الأشياء من المسال السابق بواسطة المفاتيح Keys المعروفة في لغة Python, لأن خصائص الكائنات هنا على شكل Dictionary.

فمثلاً للوصول إلى خاصية النص للزرار هو بواسطة ["text"] لذلك الزرار يليه علامة التعيين (يساوي = ) ومن ثم النص الذي نريده وهو "QUIT" في هذه الحالة كقيمة لهذه الخاصية.

وهذا ينطبق ايضاً على لون النص بالسطر التاني من الكود السابق, وكل ذلك ينطبق ايضاً مع الزرار الخاص لطباعة النص الترحيبي بالكود التالي...

self.hi_there["text"] = "Hello"

كنشاط حاولوا تعيين خاصية لون لنص الظهور للزرار السابق hi_there .

وسنكمل لاحقاً إن شاء الله

أطيب المُنى

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#8

السلام عليكم

متغيبة عن الموضوع وعن المنتدى لفترة طويلة شوي

لظروف خاصة وخير طبعاً

آسفة للتقصير

أطيب المُنى

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

مواضيع مشابهة