واجهة المستخدم الرسومية المستندة إلى الترميز لبيثون

StackOverflow https://stackoverflow.com/questions/364327

  •  21-08-2019
  •  | 
  •  

سؤال

أريد أن أتدخل في برمجة بعض التطبيقات الجادة المستندة إلى واجهة المستخدم الرسومية، ولكن عندما أنظر إلى أشياء مثل Swing/SWT من Java، لا يسعني إلا أن أكره برمجة واجهة المستخدم الرسومية عن طريق إنشاء كائنات "عناصر واجهة المستخدم" ونشرها واستدعاء الأساليب عليها هم.

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

رأيت تنسيق HTML وأنا أحب هذه الفكرة، ولكن حتى الآن يبدو أنها موجودة فقط في C++.

أنا أبحث عن مكتبة بايثون (أو حتى مشروع WIP) للقيام بواجهة المستخدم الرسومية القائمة على العلامات.

تحديث

السبب الذي يجعلني لا أستطيع قبول ملف XML الخاص بـ QT هو نفس السبب الذي يجعلني أكره النهج البرمجي؛أنت تقوم بتجميع كل عنصر واجهة مستخدم بشكل منفصل، وتحديد كل خاصية لها في سطر منفصل.أنها لا توفر أي ميزة على القيام بذلك بطريقة برمجية.

هل كانت مفيدة؟

المحلول

يمكنك تجربة XUL من Mozilla.وهو يدعم بايثون عبر XPCOM.

شاهد هذا المشروع: pyxpcomext

لم يتم تجميع XUL، بل تم تعبئته وتحميله في وقت التشغيل.يستخدمه Firefox والعديد من التطبيقات الرائعة الأخرى، لكن معظمها يستخدم Javascript للبرمجة النصية بدلاً من Python.هناك واحد أو اثنان يستخدمان Python بالرغم من ذلك.

نصائح أخرى

يجب أن تبحث في Qt، والتي يمكنك استخدامها من Python باستخدام واجهة PyQt الممتازة (لماذا لم يطلقوا عليها اسم QtPy --- لطيف، فهمت؟--- لن أفهم أبدًا).

باستخدام Qt، يمكنك الاختيار بين إنشاء واجهة المستخدم الرسومية الخاصة بك برمجيًا (وهو ما لا تريده)، أو استخدام علامات XML.يمكن تجميع ملف XML هذا إلى تعليمات برمجية مسبقًا، أو تحميله بأمر قصير.هذه الأخيرة هي الطريقة العادية للعمل باستخدام PyQt.

Qt متعدد الاستخدامات، وعالي الجودة، ومتعدد المنصات، ومن المحتمل أنك تستخدمه بالفعل دون أن تعرف ذلك.تطبيق عميل Skype الرسمي مكتوب بلغة Qt إذا كنت أتذكر بشكل صحيح.

يحرر: ما عليك سوى إضافة بعض الروابط حتى يشعر OP ببعض الشعور بها ...

ماذا عن wxPython؟لقد بدأت للتو العمل بها، ولكن هناك أداة - محرر موارد XRC - تسمح لك بتجميع واجهة المستخدم الرسومية الخاصة بك، والتي يتم كتابتها بعد ذلك في ملف XML.كما أفهمها، يقوم تطبيق Python الخاص بك بتحميل ملف XML، بدلاً من دمج مجموعة كاملة من أكواد تخطيط واجهة المستخدم الرسومية مع كود Python الخاص بك.

إذا اخترت لغة مثل Tcl أو Python وTk لتطوير تطبيقك، يصبح من السهل جدًا كتابة DSL الخاص بك لوصف الواجهة.يمكنك، على سبيل المثال، كتابة DSL يتيح لك إنشاء قوائم مثل هذا:

menubar {
    File => {
        Open => cmd.open
        Save => cmd.save
        Exit => cmd.exit
    }
    Edit => {
        Cut => cmd.cut
        Copy => cmd.copy
        Paste => cmd.paste
    }
}

...ونماذج واجهة المستخدم الرسومية الرئيسية الخاصة بك مثل هذا:

form PropertiesForm {
          Font: [fontchooser]
    Foreground: [foregroundChooser]
    Background: [backgroundChooser]
}
form NewUserForm {
    username [_____________________]
    [] administrator
    enable the following features:
    () feature 1
    () feature 2
    () feature 3
}
notebook {
   Properties => PropertiesForm
   New User => NewUserForm
}

...وما إلى ذلك وهلم جرا.تتفوق Tcl حقًا في السماح لك بكتابة DSL مثل هذا.لاحظ أن هذه الإمكانية ليست مدمجة في Tcl في حد ذاتها، ولكن اللغة تجعل خطوط DSL تافهة.يوجد بعض هذا النوع من الأشياء على موقع Tcler's wiki، على سبيل المثال، يوجد رمز لإنشاء قوائم مشابهة لما وصفته في القوائم أصبحت سهلة.

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

إذا كنت تستخدم جتك, ، يمكنك استخدام الفسحة, وهو ملف XML.

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

إنه XML، وليس Python، ولكن انظر إليه افتح لازلو

شبابيك؟

يمكنك استخدام محرر WinForms في Visual Studio ثم التحدث إلى التجميع من IronPython.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top