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

هل يمكن إنشاء واجهة رسومية من دون إستعمال المكتبات

بدأه mecripi في 27 ديسمبر 2010 · 9 رد · 4,072 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مكتبا الواجهة الرسومية كثيرة في بايثون

لكني لا حظ أني عند إستعمال هذه المكتبات أن ما أفعله ليس أقل مما يفعل مصمم ببرنامج فتوشوب مثلا

علي الأقل هو يعرف ما يفعل كما أنه يفعل مايريد أي أنه يستطيع رسم ما يريد من نسيج مخيلته.

أما أنا محصور بعدد من خيارات و كأنني أستعمل برنامج أوفيس وورد في ذلك

حتكا يمكن الإنستغناء عن هذه المكاتب بل يمكن عدم إستعمال كل المكاتب بتاتا

لكن هذا يؤدي إلي صعوبة البرمجة بصفة عامة و تعقدها كما يؤدي إلي ضياع الوقت

لكن علي الأقل علي كل مبرمج أن يحسن التعامل مع ذلك

أي أننا نستعمل المكتبات للسرعة في إنتاج البرامج لكن ليس لدرجة عدم القدرة علي الإستغناء عنها

وإلا لأصبحت البرمجة لا تختلف عن تقنيى البرمجة بدون كود أو حتي عن التصميم.

وهاكذا حتي صار المبرمجون يبرمجون لغات برمحة بإستعمال لغات أخري

من المفروض أن تبرمج لغات البرمجة بلغة الآلة أي النضام الثنائي

أخشي أن يأتي وقت لا يعرف فيه أي أحد البرمجة بلغة الآلة.

حسنا لقد أطلت الحديث وخرجت عن الموضوع

لكن في الواقع أريد أن أعرف كيفية إنشاء واجهة رسومية من دون إستعتمال أي من المكتبات.

#2

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

المكتبات الجاهزة تختصر الوقت ... وتقدم تقريبا ماتحتاجه معظم التطبيقات ... كما تتيح المكتبات ان تقوم بعمل عناصر تحكم خاصة بك تتحكم بها كما تريد

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

لقد تطرقت لهذا الموضوع فى الباب الثالث من كتاب اعمق اسرار البرمجة - الجزء الاول - 2007

ممكن تطلع عليه وان شاء الله تستفيد

http://www.kutub.info/library/book/466

وهذا مقتبس من الكتاب

ان واجهة النظام System User Interface عنصر هام جدا من عناصر النظام ومع ذلك فان هناك نظم ليس لها واجهة على الاطلاق مثل الانظمة المختبئة داخل نظم اخرى Embedded Systems – عندما يتم تحديد هل سوف تكون هناك واجهة للنظام

ام لا – ينبغى ايضا تحديد ماهى ملامح هذه الواجهة اى سماتها والتى ترتكز على شيئين هما

1 – النمط الذى تعمل فيه الشاشة Screen Mode

وهو اما نمط نصى Text Mode او نمط رسومى Graphic Mode

2 – كيفية تفاعل النظام مع المستخدم how Program Interaction with user وهو اما عن طريق المواجهة الخطية Command Line او من خلال القوائم التى يتم اختيار احد عناصرها من خلال الاسهم و مفتاح الادخال وتسمى User Interfacre Menus واخيرا المواجهة من خلال النوافذ والايقونات والقوائم والفارة ويطلق عليها المواجهة الرسومية GUI وينبغى ادارك ان طريقة التفاعل مع المستخدم تعمل فى اى نمط فمثلا نجد ان المواجهة الخطية Command Line من الممكن ان تعمل فى نمط نصى Text Mode كما يحدث غالبا – او تعمل فى نمط رسومى Graphic Mode – وبالمثل المواجهة الرسومية GUI من الممكن ان تعمل قى نمط رسومى Graphic Mode كما يحدث غالبا – او فى نمط نصى Text Mode – وبالمثل المواجهة بالقوائم Menus والتى تنتشر على حد سواء فى كل من النمط النصى والنمط الرسومى.

post-167987-004983800 1293421645_thumb.j

مثال على مواجهة خطية تعمل فى نمط نصى نظام DOS عندما يكون هو النظام المثبت على الحاسب كنقطة بداية – وكمثال على نظام مواجهة خطية يعمل فى نمط رسومى هو نظام DOS ايضا ولكن عندما تقوم بتشغيله من خلال WINDOWS بحيث

يعمل فى نافذة من نوافذ Windows – وكمثال على مواجهة رسومية GUI تعمل فى نمط رسومى Graphic Mode هو نظام Windows – وكمثال على مواجهة رسومية GUI تعمل فى نمط نصى Text Mode فهناك العديد من برامج DOS مثل برنامج

EDIT المسئول عن تحرير الملفات.

مستويات العمل عند برمجة واجهة النظام :-

post-167987-002513900 1293422181_thumb.p

هناك العديد من المستويات

o برمجة واجهة النظام من خلال التعامل المباشر مع العتاد Low Level Programming

o برمجة واجهة النظام من خلال استخدام دوال جاهزة للعرض او الرسم على الشاشة

 قد تكون هذه الدوال قمنا بكتابتها مسبقا

 قد تكون متوفرة من قبل لغة البرمجة

 قد تكون خدمات متاحة من قبل نظام التشغيل

o برمجة واجهة النظام من خلال استخدام مكتبة CUI او MUI او GUI

 قد تكون هذه الدوال قمنا بكتابتها مسبقا

 قد تكون متاحة من قبل لغة البرمجة

• عندها قد تتعامل مع العتاد مباشرة Low Level Programming

• قد تستند على خدمات من قبل نظام التشغيل

o برمجة واجهة النظام من خلال استخدام ادوات تصميم Screen/Form Designer

 قد تكون هذه الادوات قمنا بكتابتها مسبقا

 قد تتوفر فى لغة البرمجة

o برمجة واجهة النظام من خلال استخدام المعالج Wizard ومولد الكود او التعليمات Code Generator

لابد من ان ترجع المستويات العليا الى المستويات السفلى لكى تنجز المهام الخاصة بها – فمثلا عند عمل نموذج من خلال المعالج Wizard فانه من الاحرى ان ينتج ملف نموذج Form File يستطيع مصمم النماذج Form Designer او مصمم الشاشات Screen Designer (فى حالة Text mode) التعامل معه.

بينما يفترض ان يولد مصمم النماذج ملف تعليمات او اكواد Source Code File يشتمل على تعليمات تستند على مكتبة الواجهة سواء كانت MUI او GUI .

بينما من المفترض ان تستند مكتبة MUI او GUI على مكتبة العرض او الرسم Graphic Library والتى بدورها تستند على التعامل مع المكونات المادية Low Level Programming .

واثناء المرور بهذه المراحل الخمسة – من المحتمل ان يتدخل كل من نظام التشغيل – او لغة البرمجة كوسيط. بين اى مرحلتين من هذه المراحل.

وغالبا مايختص نظام التشغيل بجزء Low Level Programming واحيانات يوفر Graphic Library و UI والذى من الممكن ان توفره لغة البرمجة بجانب توفير Wizard و الـ Designer .

وكملاحظة اخيرة ان المعالج Wizard و المصمم Designer يظهران فقط فى مرحلة تطوير وبرمجة النظام – بينما لا يتواجدان اثناء عمل النظام.

والله الموفق

المرفقات
ui2.jpgshot2.png
#3
اقتباس

وإلا لأصبحت البرمجة لا تختلف عن تقنيى البرمجة بدون كود أو حتي عن التصميم.

اريد ان اضيف توضيح على هذه النقطة

التصميم والفكر فى البرمجة على حد علمى هما جوهر الابداع .... وليس كتابة الكود

ولاحظ ان الخوارزميات التى يتبعها البرنامج الذى تكتبه تدخل ضمن التصميم

وانما الكود يرتبط بالـ Syntax الذى تفرضه عليك لغة برمجة تستخدمها

ولهذا نفس الخوارزمية (خوارزمية بحث ... فرز مثلا ) يمكن ان تستخدمها فى اكثر من لغة

ونفس البرنامج يمكن ان تكتبه باكثر من لغة بنفس الافكار فقط تلتزم فى كل مرة بقواعد اللغة التى تستعملها

ويمكن ان تنتقل من لغة برمجة الى اخرى طالما انك امتلكت الفكر البرمجى واتقنت اللغة الاولى

والله الموفق

#4
اقتباس

وهاكذا حتي صار المبرمجون يبرمجون لغات برمحة بإستعمال لغات أخري

من المفروض أن تبرمج لغات البرمجة بلغة الآلة أي النضام الثنائي

أخشي أن يأتي وقت لا يعرف فيه أي أحد البرمجة بلغة الآلة.

لو كل مرة هنبدا من الصفر ..... امتى هنوصل للمليون والمليار !!!!!

العلم تراكمى ... ومن المنطق ان تبدا من حيث انتهى الاخرون

ولان التقنية يكون بها مشاكل احيانا تحتاج لاعادة البناء

وقتها فقط يتم البدء من الصفر

لكن مش انا او انت الى نبدا من الصفر

شركات عملاقة .... فرق كبيرة فى المصادر المفتوحة .... مراكز ابحاث

لو عايز تبدا من الصفر انضم للناس دى

اما شركة كبيرة ... او كون فريق فى المصادر المفتوحة او انضم لفريق ... او كن عضو فى مركز ابحاث

مجرد راى

والله الموفق

#5

الرسم على الشاشة يعتمد على نظام التشغيل في الاساس و لا يمكن ان ترسم شيء كبرنامج عادي الى عن طريق الواجهة اللتي يقدمها نظام التشغيل.

على كل حال اعتقد انك تقصد ان ترسم كل شي من الصفر دون الاعتماد على الـ widget الجاهزة مثل الازرار و خلاف ذلك.

في هذه الحالة يمكنك ان ترسم كل شي بنفسك و تتعامل مع الـ events بنفسك، مثلا اذا كنت تستعمل Qt هناك واجهة جديدة في اصدار 4.7 يسمح بتشكيل الواجهة و عناصرها بطريقة مرنة

http://labs.qt.nokia.com/2009/05/13/qt-declarative-ui/

و هناك ايضا Animation Framework و هو ايضا يسمح لك برسم عناصر الواجهة كما تريد

http://doc.qt.nokia.com/solutions/4/qtanimationframework/animation.html

هناك ايضا مكتبة اسمها clutter تسمح لك برسم كل شي على مزاجك

http://www.clutter-project.org/

#6
اقتباس

الرسم على الشاشة يعتمد على نظام التشغيل في الاساس و لا يمكن ان ترسم شيء كبرنامج عادي الى عن طريق الواجهة اللتي يقدمها نظام التشغيل

الامر يتوقف على طريقة عمل نظام التشغيل

قديما تحت نظام DOS كان مسموح للتطبيقات ان تعمل DMA = Direct Memory Access

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

والصورة التالية لبيئة عمل رسومية قمت ببرمجتها تحت الدوس حيث فى الاساس يتم التعامل مع الشاشة مباشرة عن طريق DMA

ويتم رسم كل شىء من الصفر .... واستقبال المدخلات من لوحة المفاتيح والفارة لحظة بلحظة من قبل نظام ادارة الاحداث

post-167987-050907400 1293429573_thumb.p

تم التشغيل فى الصورة تحت windows 7 من خلال استخدام DOS Box

والله الموفق

المرفقات
shot3.png
#7

يظل الامر مرتبطا بنظام التشغيل، و انت لا تحصل على الـ DMA الا لأن النظام يمنحك ذلك. و لو نقلت نفس الكود الى نظام آخر فلن يعمل.

#8
اقتباس

يظل الامر مرتبطا بنظام التشغيل، و انت لا تحصل على الـ DMA الا لأن النظام يمنحك ذلك. و لو نقلت نفس الكود الى نظام آخر فلن يعمل.

كلامك سليم ... فلكل نظام خصائصه التى على المبرمج ان يتعامل معها

#9

السلام عليكم

وسنة سعيدة لكل الأعضاء إن شاء الله

أنا آسف لأني تأخرت في الرد فقد كنت مشغولا.

يا جماعة

أنا لا أريد أن أتحكم في الواجهة الرسومية

بل جل ما أريده هو برمجة مكتبات للواجهة الرسومية وإلي ماغير ذلك

من دون إستعمال مكتبات و برامج أنا لا أريد أن أصنع برنامج بإستعمال برنامج آخر

معرفتي في لفة بايثون حتي الآن تقتصر في:

الأساسيات

الدوال

البرمجة الكائنية الموجهة

فتح ومعالجة الملفات النصية

الواجهة الرسومية

قلت سابقا أن الواجهة الرسومية تتم بإستعمال المكتبات

الدوال و البرمجة الكائنية الموجهة وظعتا أساسا لتنظيم الكود البرمجي

فتح الملفات للتفاعل مع البرامج الأخري

إذن يبقي لدي الأساسيات أو بمعني آخر الكلمات المحجوزة

فهل يمكنني يإستعالها هي فقط برمجة واجهة رسومية و إلي غير ذلك

في نظري هذا شيء مستحيل حتما تو جد أشياء نا قصة وأنا أريد تعلمها

وكما قلت يا سيدي pwct maker الوقت ثمين

و أنا لا أريد تضيع وقتي في تعلم كيفية إستعمال المكتبات

أريد تجاوز كل هذا و حتي إن كان الأمر في منتهي الصعوبة

أنا لا أبرمج كي أصنع البرامج

بل أبرمج للتحدي و المتعة.

لذا فأنا أحب البساطة في صناعة البرامج حيث أفضل البرمجة الإجرائية وحتي لو طال الكود البرمجي...............

.......................................................وشكرا علي الردود

#10

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

إذا كنت فهمتك صح فما تريد هو مكتبة مدمجة مع بايثون؟ مكتبة TK مدمجة مع بايثون من أجل عمل واجهات رسومية, لكن اعلم أنها عفى عليها الزمن.

http://www.pythonware.com/library/tkinter/introduction/index.htm

http://www.ibm.com/developerworks/linux/library/l-tkprg/

تم تعديل هذه المشاركة بواسطة محمد سمير في 1 يناير 2011 في 17:09

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…