PyGTK 3: برنامج تعليمي صغير لواجهة المستخدم الرسومية مع Python + GTK + 3

سنقوم بإنشاء برنامج صغير باستخدام PyGTK 3.0 يعمل أيضًا مع PyGTK 3.4. ستعلمك واجهة المستخدم الرسومية الصغيرة هذه كيفية تقسيم البرنامج إلى ملفين أو أكثر.

يمكنك زيارة البرنامج التعليمي لـ Sebastian Pölsterl على PyGTK 3 الجديدة ، وهنا البرنامج التعليمي الجديد ، أترك الرابط:

http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html

هذه مدونة سيباستيان.

http://k-d-w.org/node/88

نقد هذا البرنامج التعليمي من قبل سيباستيان هو أنه لا يعلم كيفية تقسيم البرنامج إلى أجزاء أو إلى عدة ملفات ، كان من الجيد أن يقدم مثالاً عن كيفية القيام بذلك باستخدام PyGTK 3.

يتم تقسيم جميع البرامج الكبيرة والمعقدة إلى العديد من الملفات ويتم وضع الملفات في أدلة أخرى ، أي أنها موجودة في مجلدات مختلفة.

لنبدأ بالمثال الصغير:

ها هو كود الكتابة في ملف واحد يسمى gui.py. نفتح محرر نصوص Gedit أو المحرر الذي نستخدمه كثيرًا ، وننسخ الكود أدناه ونحفظه كـ gui.py

من gi.repository import Gtk class gui (): def on_open_clicked (self، button): طباعة زر "\" Open \ "تم النقر عليه" def on_close_clicked (self، button): طباعة "Closing application" Gtk.main_quit () def __init__ (self): self.window = Gtk.Window () self.window.connect ('delete-event'، Gtk.main_quit) self.box = Gtk.Box () self.window.add (self.box) self. button = Gtk.Button (label = 'Open') self.button.connect ("تم النقر عليه" ، self.on_open_clicked) self.box.pack_start (زر self.pack_start ، صحيح ، صحيح ، 0) self.button = Gtk.Button ( التسمية = 'إغلاق') self.button.connect ("تم النقر عليه" ، self.on_close_clicked) self.box.pack_start (زر self.button ، صحيح ، صحيح ، 0) self.window.show_all () Gtk.main () إذا __name__ == '__main__': gui = gui ()

تلع

def on_open_clicked (self، button): طباعة تم النقر على زر \ "فتح \"

إنها وظيفة يتم تنشيطها في الجهاز عندما نضغط على زر الفتح. الإشارة لتفعيلها هي:

self.button.connect ("clicked"، self.on_open_clicked) def on_close_clicked (self، button): طباعة "Closing application" Gtk.main_quit ()

إنها وظيفة يتم تنشيطها عندما نضغط على زر الإغلاق.

أغلق البرنامج الذي نقوم بتشغيله.

الإشارة لتنشيطه

self.button.connect ("clicked"، self.on_close_clicked) من gi.repository import Gtk ### نستدعي مكتبات PyGTK ### class gui (): ### تعريف الصنف المسمى gui هو الصنف الرئيسي # ##

إعلان التطبيقات المصغّرة: التطبيقات المصغّرة هي برنامج تم تحديده مسبقًا بواسطة مكتبات واجهة المستخدم الرسومية التي نستخدمها. على سبيل المثال ، الأدوات هي زر ونافذة ومربع وما إلى ذلك. هذه هي الأدوات التي نعلن عنها في برنامجنا.

self.window = Gtk.Window () ### نافذة ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Open') ### # زر الفتح #### self.button = Gtk.Button (label = 'Close') #### زر الإغلاق #### self.window.add (self.box) #### المربع مضمن في النافذة تسمى النافذة #### self.box.pack_start (self.button، True، True، 0) ##### الزر موجود في المربع المسمى ### self.window.show_all () ## # نعرض النافذة بأكملها ### gui = gui () ### إنشاء كائن GUI ####

نضع برنامجنا في مجلد يسمى بسيط في حالتنا على سطح المكتب

فير

نفتح المجلد باستخدام الجهاز ، في حالتي أستخدم Nemo من Linux Mint 14.

إغلاق

للتجميع وضعنا في الطرفية python gui.py

انظر للصورة.

محطة

يمكننا الآن رؤية برنامجنا الصغير أو عنصر واجهة المستخدم الجديد الذي تم إنشاؤه باستخدام مكتبات PyGTK 3

إنها نافذة بسيطة بها زرين.

 

بدون عنوان

 

الآن نقسم البرنامج إلى ثلاثة أجزاء ، ثم أترك رمز الملفات الثلاثة.

أول ملف gui.py

من gi.repository import Gtk من إتلاف استيراد إتلاف من io import io class gui (إتلاف ، io): def __init __ (self): self.window = Gtk.Window () self.window.connect ('delete-event'، Gtk .main_quit) self.box = Gtk.Box () self.window.add (self.box) self.button = Gtk.Button (التسمية = 'فتح') self.button.connect ("تم النقر عليه" ، self.on_open_clicked) self.box.pack_start (self.button، True، True، 0) self.button = Gtk.Button (label = 'Close') self.button.connect ("clicked"، self.on_close_clicked) self.box.pack_start ( self.button ، True ، True ، 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()

ملف io.py الثاني

class io: def on_open_clicked (self، button): طباعة تم النقر على زر \ "فتح \"

الملف الثالث تدمير. py

من gi.repository import Gtk class تدمير: def on_close_clicked (self، button): طباعة "Closing application" Gtk.main_quit ()

نضع الملفات الثلاثة في نفس المجلد في حالتنا ، يسمى المجلد البسيط المقسم.

بسيط

لتجميع الملفات الثلاثة. نفتح المجلد باستخدام الجهاز ونعيده ببساطة إلى الجهاز

python gui.py

تم إجراء تعديلات على كود واجهة المستخدم الرسومية

من إتلاف الاستيراد إتلاف ### بيان لاستيراد ملف تدمير. py ### من io import io ### بيان لاستيراد ملفنا io.py ### class gui (إتلاف ، io): #### إلى الفئة رئيسي نضيف الفئات الفرعية تدمير و io ####

يمكنك أن ترى أن الجملة

def on_open_clicked (self، button): طباعة تم النقر على زر \ "فتح \"

إنه ليس في gui.py ، إنه في ملف io.py

جملة او حكم على

def on_close_clicked (ذاتي ، زر):

طباعة "طلب الإغلاق"
Gtk.main_quit ()

وهو موجود في ملف destruction.py

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

من ناحية أخرى ، فإن Python هي أحد أعمدة البرمجيات الحرة ، وهي مهيأة للعمل مع GTK 3.6 /3.8 ، واسمها PyGTK. يُطلق على تكيف Python لـ KDE اسم PyQT.

تم تكييف Python لنظام التشغيل Mac OS و WINDOWS.

آمل أن يكون هذا البرنامج التعليمي الصغير PyGTK3 مفيدًا لك. يمكنهم توجيه كل الانتقادات البناءة التي يريدونها.

أعرف أيضًا بعض Gtk 3.4 /3.6 و Vala GTK 3.4 / 3.6.

http://www.youtube.com/watch?v=9ckRn_sx8CE

أخيرًا ، يعتذر مستخدمو KDE عن عدم القيام بدروس تعليمية مصغرة لـ KDE.


محتوى المقال يلتزم بمبادئنا أخلاقيات التحرير. للإبلاغ عن خطأ انقر فوق هنا.

33 تعليقات ، اترك لك

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   روتس 87 قال

    في kde ، أفضل استخدام kdevelop (أعتقد أن هذا ما يطلق عليه) لإنشاء واجهة المستخدم بسهولة ولكن ما زلت أجد صعوبة في العثور على العمليات لتحقيق ذلك x شيء: '(

  2.   St0rmt4il قال

    عظيم لأولئك منا الذين يستخدمون Python: D!

    تحيات!

  3.   بول قال

    مرحبًا ، لقد كنت أتابع هذا المجتمع لفترة طويلة ولست متأكدًا تمامًا مما إذا كانت هذه هي المرة الأولى التي أعلق فيها أو قمت بذلك بالفعل من قبل 😀 (أنا لست مهتمًا بكتابة التعليقات على الويب حقًا). الشيء هو أنني أفعل ذلك لترك اقتراحًا لـ Elav و KZKG ^ Gaara كمسؤولين ، وأعتقد أنه سيكون من الجيد إضافة مكون إضافي لتلوين بناء الجملة الآن بعد أن رأيت مؤخرًا المزيد من المنشورات التي تحتوي على كود بلغات برمجة مختلفة. أعلم أن هناك عددًا قليلاً من المكونات الإضافية ولكني لم أجرب أيًا منها لأنني لست مستخدمًا لبرنامج WordPress ، لذلك أتركك تفكر في جدوى الطلب. أغتنم هذه الفرصة لأسأل بقية القراء عن رأيهم في الفكرة ، لأنني أعرف أن هناك أشخاصًا يفضلون قراءة الكود دون أي زينة. أعتذر إذا كان هذا قد تم التعليق عليه بالفعل هنا وتم رفضه لسبب ما ، حيث لا أتذكر رؤية مناقشة حول الموضوع.

    1.    marianogaudix قال

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

      لكن مرحبًا ، أنا مرتاح أيضًا للمنتدى وأنه يمكننا المناقشة والتعلم معًا.

      1.    إليوتيمي 3000 قال

        يعد GNU Emacs أكثر راحة ، حيث يتعين عليك على الأقل اختيار مدقق لغة البرمجة الذي تريد العمل فيه (إذا كنت لا تريد وزنًا أكبر لمعالجك ، فاستخدم GNU Nano واستمتع بالبساطة في أفضل حالاتها).

        1.    marianogaudix قال

          إليو نحن نتحدث عن Worpress. تم تنفيذه في مدونة من Linux. ليس لديها وظائف لتلوين حروف التدوينات.

          1.    إليوتيمي 3000 قال

            انا اسف.

        2.    بانديف 92 قال

          Naaa emacs مريح لأولئك الذين لديهم 84 إصبع XD .. ، الأشخاص العاديون ، زميل النص ، Sublimetext أو notepad ++ xd

          1.    إليوتيمي 3000 قال

            الشيء غير المحتمل هو أنك لم تتعلم الكتابة ، وهو أمر مطلوب لتكون قادرًا على التعامل مع GNU Emacs واختصارات لوحة المفاتيح الخاصة به جيدًا. بالإضافة إلى ذلك ، تسهل واجهة المستخدم الرسومية (GUI) من استخدام قوائمها (يمكن استخدامها في Windows ، ولكن لا يوصى بإجراء ذلك في الوضع العادي ولكن مع وضع موجه الأوامر بحيث لا يقاطع Win32 البرنامج النصي الخاص بك).

  4.   سجاد قال

    تعليمي رائع جدا. لكن بالمناسبة ، لم يتم تجميع شفرة مصدر Python ، إنها لغة مفسرة.

    1.    جيسكارد قال

      يمكن تجميعها إلى رمز زائف. ليست لغة الآلة بل البايتات التي تمثل شيئًا ما للمترجم الفوري ، ولكن تسمى العملية مترجمة أيضًا. بهذا المعنى ، من الممكن القول أنه تم تجميع شيء ما.

  5.   HTY قال

    ربما يكون من الأفضل تعلم pytgk2 لأن أحدث إصدار متاح لنظام التشغيل Windows هو 2.24. السلسلة 3 واضحة بغيابها. والألسنة الرديئة تقول أن جنوم يكسر كل الرؤوس في كل نسخة جديدة.

    1.    marianogaudix قال

      أنا أبرمج نموذجًا بالحجم الطبيعي باستخدام GTK 3.4 / 3.6 والحقيقة هي أنهم يكسرون صبرك ويفقدون عقلك ، وعليك إعادة كتابة الكود ، والآن أفهم سبب شكوى مستخدمي Linux Mint من GTK ومشروع GNOME.
      بالنسبة لأولئك من MINT أتفق مع GTK 2.4 لم يحدث هذا.

  6.   كارلوس قال

    تعليمي جيد ومراجع.
    مجرد تفصيل ، منذ وضع التعليمات البرمجية ، تعد المسافات البادئة في Python إلزامية ويجب احترامها في رمز المثال.

    تحيات!

    1.    marianogaudix قال

      هل يمكنك شرح ما تتكون منه التعريفات الإلزامية في Python؟ أقول لك الحقيقة ، لم أسمع بذلك من قبل. أنا معتاد بشدة على منتديات PyGTK 2/3 باللغة الإنجليزية وربما أغفلتها.

      1.    جيسكارد قال

        في Python ، لا تستخدم المفاتيح كما هو الحال في C أو كتل البداية / النهاية كما في Pascal ، ولكن يتم فهم كل شيء من خلال المسافة البادئة التي تعطيها للكود. أي ، يتم التعرف على الكتل عن طريق وضع مسافة بادئة لها. إنها ميزة أحبها بشكل خاص. أنت تتجنب كتابة المفاتيح وأشياء من هذا القبيل.

        1.    بانديف 92 قال

          أنا فقط لا أحب ذلك ، يبدو أنه من الأسهل وضع مفتاحين صغيرين أو std :: endl ؛ بدلاً من رؤيتك إذا كان سطر xd مجدولًا جيدًا

          1.    فيليبي قال

            : p سيضع مدرس البرمجة صفرًا لك. أو أسوأ من ذلك ، سوف يطردونك من وظيفتك. ما يهم أكثر هو أن الشفرة قابلة للقراءة بكل ما يعنيه ذلك

          2.    بانديف 92 قال

            تنتهي بأقواس إغلاق ، تجعلني XD أكثر قابلية للقراءة ..

          3.    جيسكارد قال

            بجدية؟؟؟


            int main(int argc, char *argv[]){program_name = argv[0];while ((argc > 1) && (argv[1][0] == '-')) {switch (argv[1][1]) {case 'v':verbose = 1; break;case 'o':out_file = &argv[1][2];break;case 'l':line_max = atoi(&argv[1][2]);break;default:fprintf(stderr,"Bad option %s\n", argv[1]);usage();}++argv;--argc;} if (argc == 1) {do_file("print.in");} else {while (argc > 1) {do_file(argv[1]);++argv;--argc;}}return (0);}

            هل ترى؟ بدون المسافات البادئة لم يتم فهمها جيدًا. وهذا أمر سهل. مع واحد أكثر تعقيدًا ، لا يفهمه إلا المترجم. الشيء هو ، بما أنه يتعين عليك وضع مسافة بادئة على أي حال (لكي يفهم البشر الشفرة) فلماذا تكون زائدة عن الحاجة وتستخدم الفواصل؟ يكفي مع المسافة البادئة وهذا كل شيء.

          4.    بانديف 92 قال

            بالطبع ، لا شيء مفهوم ، لأنك لا تحترم قواعد الكتابة الجيدة لبرنامج c / c ++. ما فعلته صالح لأي شيء ، مثل تداخل دالة داخل دالة أخرى داخل دالة أخرى ، ثم أريد أن أراك xd إذا كنت قادرًا على فهمها.

          5.    بانديف 92 قال

            بالمناسبة ، مع شكلين ، يمكن فهم هذا الرمز بسهولة xD

          6.    جيسكارد قال

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

          7.    أثيوس قال

            كلاهما جيد ، والمسافة البادئة وغير المسافة البادئة ، في رأيي أفضل أسلوب الفاصلة المنقوطة أو الياقوت ، على غرار الثعبان ولكن المسافة البادئة ليست ضرورية.

            هذه هي الطريقة الأفضل لفهمها: P:

            صدى 'int main (int argc، char * argv []) {program_name = argv [0]؛ while ((argc> 1) && (argv [1] [0] ==' - ')) {switch (argv [ 1] [1]) {case 'v': verbose = 1؛ break؛ case 'o': out_file = & argv [1] [2]؛ break؛ case 'l': line_max = atoi (& argv [1] [2])؛ break؛ افتراضي: fprintf (stderr، »خيار سيء٪ s \ n »، argv [1])؛ Usage ()؛} ++ argv؛ –argc؛} if (argc == 1) {do_file (" print.in ")؛} else {while (argc> 1) { do_file (argv [1])؛ ++ argv؛ –argc؛}} return (0)؛} '| perl -p -e 's / \ {/ \ {\ n \ t / g؛ s / \؛ / \؛ \ n \ t / g؛ s / \ t \} / \} / g؛'

            تحياتي 😀

      2.    جيسكارد قال

        أعتقد أن كارلوس يعني أنه لا توجد مسافات بادئة عند ظهور الشفرة. لن يعمل ذلك باستخدام النسخ واللصق. لا أعرف ما إذا كانت العلامة موجودة عند إنشاء منشور لإدخال رمز اللغة. سيكون من الجيد لو وضعها إذا لم تكن موجودة.

        1.    جيسكارد قال

          لقد رأيت بالفعل ما هي المشكلة: تزيل علامة CODE جميع المسافات وعلامات التبويب (لا ينبغي أن تفعل ذلك !!!) ولكن إذا وضعت nbsp عليها ، فستبدو الشفرة جيدة. A0 باللون السداسي (160 في ديسمبر) على الرغم من أنني أعتقد أنه قد يعتمد على الخط (لا أعرف). إذا تم استخدامه فإنه يخرج على النحو التالي:

          def fib(n):
              a, b = 0, 1
              while a < n:
                  print(a)
                  a, b = b, a+b

          يبدو ذلك جيدًا في اختباراتي ، لكن ليس لدي معاينة عندما أنشر الإجابات (ويجب أن يكون هناك ذلك !!!) إذا لم يتم الكشف عنها ، فهذا ليس خطأي

          1.    marianogaudix قال

            انظر إلى الأمثلة التي قدمها سيباستيان بولسترل في دروسه في PyGTK 3 ، ​​سيباستيان لا يضع ملصقات.

            مثال:

            http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example

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

          2.    جيسكارد قال

            لا اعرف ماذا تقصد. ما أقوله هو أنه هنا ، في المنشورات ، ليس من الممكن استخدام علامة HTML «CODE» بحيث يكون ما تضعه كرمز ويظهر بمسافة بادئة جيدة. في الصفحة التي تشير إليها ، إذا نظرت إلى مصادر الصفحة ، فسترى أنها لا تستخدم CODE ولكنها تستخدم محددات HTML أخرى.
            إنه ليس ضد الكود الذي أدخلته بل يشير إلى وجود خلل في نظام النشر في هذا الموقع. والتي ربما يمكن للمشرفين إصلاحها.
            عندما أتحدث عن العلامات ، من الواضح أنني أتحدث عن HTML وليس عن Python. على أي حال ، إذا وضعت رمزًا بدون مسافة بادئة في Python ، فلن يعمل. إذا جاء مبتدئ ونسخ الكود كما يظهر في هذا المنشور وحاول تشغيله ، فسيفشل. قد تكون محبطًا لأنك مبتدئ. مرة أخرى ، الخطأ ليس ذنبك ؛ وفي إجابتي السابقة المباشرة ، كان ما فعلته هو إعطاء طريقة لحل المشكلة من مستوى المستخدم - الذي - المنشورات.

          3.    marianogaudix قال

            أنت محق تمامًا ، كان يجب أن أقوم بتحميل الصور بدلاً من نسخ الرمز.
            لإظهار كيف يتم ترتيب العبارات بشكل صحيح في PyGTK 3.

  7.   فيليبي قال

    للبرمجة باستخدام python ، أوصي باستخدام Eclipse مع المكون الإضافي PyDev ، أو Pychar m

  8.   لويكس قال

    كما تم التعليق أعلاه ، هذا هو بالضبط سبب عدم إعجابي ببيثون ، بسبب مشكلة المسافة البادئة. كما رأينا ، لن يعمل النسخ واللصق ، وهو ما لا يحدث مع لغات أخرى مثل C و Java و PHP وما إلى ذلك.

    الشيء المقروئي ، نطبق مُجمل كود (مثل http://indentcode.net/ ) و مستعد،

    القبيح ثابت ، ولكن إذا لم توجد مسافة بادئة وتغير المنطق فنحن نسمع ..

  9.   كارلوس قال

    أنا جديد على PyGTK ، هل من الممكن التفاعل مع نصوص شل بهذه اللغة؟

    1.    حولا قال

      شكرا على البرنامج التعليمي.

      تحية.