Kivy: اجعل أدوات واجهة المستخدم سهلة الوصول باستخدام "من زر استيراد kivy.uix ..."

تم إنشاؤها على ٢٥ أبريل ٢٠١٦  ·  6تعليقات  ·  مصدر: kivy/kivy

يبدو تافهًا تقريبًا ، ولكن هل سيكون من الممكن إتاحة الوصول إلى بعض عناصر واجهة المستخدم الأساسية الأكثر استخدامًا في الوحدة النمطية kivy/uix/__init__.py ؟

قد يعني هذا بدلاً من الاضطرار إلى القيام بما يلي:

from kivy.uix.button import Button
from kivy.uix.label import Label
...
from kivy.uix.scatter import Scatter

ما عليك سوى القيام بما يلي:

from kivy.uix import Label, Button, ... , Scatter

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

بقدر ما أستطيع أن أقول ، ستحتاج فقط إلى استيراد الفئات المطلوبة إلى الوحدة النمطية kivy/uix/__init__.py وضبط المتغير __all__ مثل:

# kivy/uix/__init__.py

from kivy.uix.button import Button
from kivy.uix.label import Label
...
from kivy.uix.scatter import Scatter

__all__ = ['Button', 'Label', ..., 'Scatter']

التعليق الأكثر فائدة

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

from kivy.factory import Factory

lbl = Factory.Label(text="Hello World")

class MyScatter(Factory.Scatter):
    pass

ال 6 كومينتر

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

نسخة مكررة من https://github.com/kivy/kivy/issues/3583.

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

from kivy.factory import Factory

lbl = Factory.Label(text="Hello World")

class MyScatter(Factory.Scatter):
    pass

ربما هذه هي الطريقة التي يمكن أن تعمل بها init؟ الاستيراد في init Factory ولكل عنصر واجهة مستخدم يتم إرجاع Factory.<widget> . أم أنها قاسية جدا؟

قد يكون من الممكن استخدام طريقة ربط الاستيراد ، على الرغم من أن هذا له عيب في كسر اكتشاف الكود لبعض IDEs.

هل سبب عدم القيام بهذا الأداء بالكامل؟ إذا كان الأمر كذلك ، سيكون من الممكن (على الرغم من عدم الترتيب قليلاً) أن يكون لديك وحدة kivy.uix. everything توفر جميع الواردات.

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

أنا أشير إلى السبب _not_ للحصول على هذا النوع من الاستيراد - إذا تم استيراد جميع الأدوات بواسطة __init__.py فإنه يفرض عقوبة بسيطة عند استيراد أي عنصر واجهة مستخدم ، نظرًا لأنه يتم تحميل جميع ملفاتهم. ستكون هذه العقوبة صغيرة جدًا ، على الرغم من ذلك ، لا أعرف ما إذا كانت مهمة (على الرغم من أن هذه الأشياء على Android يمكن أن تكون ذات صلة حتى لو كانت مهملة على سطح المكتب).

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات