python - مكتبة - واجهة رسومية بايثون




مجموعة أدوات واجهة المستخدم الرسومية عبر منصة لنشر تطبيقات بايثون (4)

بناء على: http://www.reddit.com/r/Python/comments/7v5ra/whats_your_favorite_gui_toolkit_and_why/

مزايا:

1 - سهولة التصميم / التكامل - منحنى التعلم

2 - الدعم / التوفر لـ * nix ، و Windows ، و Mac ، والنقاط الإضافية للوحدة الأصلية ، ودعم الهاتف المحمول أو الويب

3 - pythonic API

4 - جودة التوثيق - أريد أن أفعل شيئًا أكثر تعقيدًا ، الآن ماذا؟

5 - عبوة خفيفة الوزن لذلك ليس من الضروري تضمين المثبت الكامل (py2exe ، py2app يعمل بشكل مثالي كما هو وليس إنشاء ملف gazillion MBs)

6 - الترخيص

7 - الآخرين؟ (التحديد)

المتنافسين:

1 - tkinter ، كما يدعم حاليا (اعتبارا من 2.6 ، 3.0)

2 - مكتبة pyttk

3 - pyGTK

4 - pyQt

5 - wxPython

6 - HTML-CGI عبر إطار بايثون (Django ، Turbogears ، web.py ، Piles ... أو)

7 - الآخرين؟ (التحديد)


أنا فقط وزنها في القول أن TKinter تمتص. يبدو للأسف أنها معبأة مع بايثون بسبب التوافق العكسي.

الوثائق مروعة. يبدو مروعا. لقد واجهت بعض الأخطاء الغريبة التي من شأنها أن تحطم بيثون.


برو wxPython

  • الكثير من الدروس
  • wxGlade كمحرر: ليست مثالية بعد ، ولكنها قابلة للاستخدام.

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

Tkinter

Tkinter هي مجموعة الأدوات التي تأتي مع python. هذا يعني أن لديك بالفعل كل ما تحتاجه لكتابة واجهة المستخدم الرسومية. ما يعنيه ذلك أيضًا هو أنه إذا اخترت توزيع برنامجك ، فمن المحتمل أن يكون لدى كل شخص آخر ما يحتاجه لتشغيل البرنامج.

Tkinter هو ناضج ومستقر ، وهو (على الأقل يمكن القول على الأرجح) سهل الاستخدام للغاية. لقد وجدت أنه أسهل في الاستخدام من wxPython ، ولكن من الواضح أن هذا أمر غير موضوعي إلى حد ما.

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

النقطة الأخرى حول مظهر Tkinter هي أن المظهر في معظم الأحيان ليس مهمًا كما يفعل الناس. معظم التطبيقات المكتوبة بأدوات أدوات مثل Tkinter و wxPython و PyQT وغيرها هي تطبيقات ذات أغراض خاصة. بالنسبة لأنواع التطبيقات التي تُستخدم فيها مجموعات الأدوات هذه ، تبدو عمليات التحرير على قابلية الاستخدام. إذا كان مظهر التطبيق أمرًا مهمًا ، فمن السهل جدًا تلميع تطبيق Tkinter.

لدى Tkinter بعض الميزات التي لا تقتربها الأدوات الأخرى من المطابقة. ولا تزال الآثار المتغيرة ، والخطوط المسماة ، ومديري الهندسة (التخطيط) ، والطريقة التي تعالج بها أحداث Tkinter هي المعيار الذي ينبغي أن يحكم على مجموعات الأدوات الأخرى.

على الجانب السلبي ، Tkinter هو المجمع حول مترجم Tcl الذي يجري داخل بيثون. هذا هو في الغالب غير مرئي لأي شخص يتطور مع Tkinter ، لكنه ينتج أحيانًا رسائل خطأ تعرض هذه البنية. ستحصل على خطأ يشكو من عنصر واجهة مستخدم باسم ".1245485.67345" والذي لن يكون له أي معنى لأي شخص إلا إذا كنت على دراية أيضًا بكيفية عمل Tcl / tk.

جانب آخر سلبي هو أن Tkinter لا يحتوي على العديد من الأدوات المصممة مسبقًا مثل wxPython. القطعة شجرة هرمية في Tkinter ضعيفة بعض الشيء ، على سبيل المثال ، وليس هناك عنصر جدول مضمن. من ناحية أخرى ، تعد عناصر Tinkers القماشية والنصية قوية للغاية وسهلة الاستخدام. بالنسبة لمعظم أنواع التطبيقات التي ستكتبها ، سيكون لديك كل ما تحتاج إليه. فقط لا تتوقع أن تنسخ Microsoft Word أو Photoshop مع Tkinter.

لا أعرف ما هي رخصة Tkinter ، أفترض نفس الشيء بالنسبة إلى python ككل. يحتوي Tcl / tk على ترخيص نمط BSD.

PyQt

انها بنيت على قمة Qt ، وإطار سي + +. انها متقدمة جدا وبعض الأدوات الجيدة مثل مصمم كيو تي لتصميم التطبيقات الخاصة بك. يجب أن تكون على علم ، أنه لا يشعر مثل بايثون 100 ٪ ، ولكن على مقربة منه. documentation ممتازة

هذا الإطار جيد حقا. يتم تطويره بشكل نشط بواسطة Trolltech ، المملوكة لشركة Nokia. تم تطوير ارتباطات بايثون بواسطة ريفر بانك.

PyQt متاح تحت رخصة GPL أو ترخيص تجاري. سعر رخصة PyQt النهرية هو حوالي 400 يورو لكل مطور.

كيو تي ليست فقط إطار عمل واجهة المستخدم الرسومية ولكن لديها الكثير من الطبقات الأخرى أيضا ، يمكن للمرء إنشاء تطبيق عن طريق استخدام فئات كيو تي فقط. (مثل SQL ، والشبكات ، والبرمجة ، ...)

تستخدم Qt لمضاهاة عناصر واجهة المستخدم الرسومية على كل نظام أساسي ولكنها تستخدم الآن الأنماط الأصلية للبرامج الأساسية (على الرغم من عدم وجود مجموعة أدوات واجهة المستخدم الرسومية الأصلية): راجع وثائق نظام التشغيل Mac OS X ونمط Windows XP

التعبئة والتغليف بسيطة مثل تشغيل py2exe أو pyInstaller. يبدو محتوى تطبيق PyQt الخاص بي على هذا النحو على النوافذ (لقد استخدمت InnoSetup فوقه للتركيب السليم):

pyticroque.exe           PyQt4.QtGui.pyd           unicodedata.pyd
MSVCP71.dll              PyQt4._qt.pyd             unins000.dat
MSVCR71.dll              python25.dll              unins000.exe
PyQt4.QtCore.pyd         sip.pyd                   _socket.pyd

تأتي QT مع مصمم عناصر واجهة مستخدم وحتى في الإصدارات الحديثة مع IDE للمساعدة في تصميم برنامج Qt.

PySide

PySide هو ملزم LGPL إلى كيو تي. تم تطويره بواسطة نوكيا كبديل لـ GPL PyQt.

على الرغم من أنه استنادًا إلى تقنية مختلفة عن ارتباطات PyQt المرخصة من GPL ، فإن PySide ستهدف في البداية إلى أن تكون متوافقة مع API. بالإضافة إلى واجهة برمجة تطبيقات PyQt المتوافقة ، سيتم توفير واجهة برمجة تطبيقات Pythonic في المستقبل.

wxPython

wxPython هو ارتباط لـ Python باستخدام wxWidgets -Framework. يخضع هذا الإطار لترخيص LGPL ويتم تطويره بواسطة مجتمع المصدر المفتوح.

ما أنا في عداد المفقودين حقا هو أداة جيدة لتصميم واجهة ، لديهم حوالي 3 ولكن أيا منها لا يمكن استخدامها.

شيء واحد يجب أن أذكره هو أنني وجدت خطأ في طريقة عرض علامات التبويب على الرغم من حقيقة أنني لم أستخدم أي شيء متقدم. (فقط على نظام التشغيل Mac OS X) أعتقد أن wxWidgets ليس مصقولًا مثل Qt .

wxPython هو حقا فقط عن الطبقات واجهة المستخدم الرسومية ، وليس هناك الكثير آخر.

يستخدم wxWidgets عناصر واجهة المستخدم الرسومية الأصلية.

ميزة wxPython على Tkinter هو أن wxPython يحتوي على مكتبة أكبر بكثير من الحاجيات للاختيار من بينها.

الآخرين

ليس لدي أي خبرة مع أطر واجهة المستخدم الرسومية الأخرى ، وربما شخص آخر لديه.


Jython

Jython هو تطبيق للغة عالية الجودة ، وديناميكية ، وجوه المنحى Python مكتوبة في جاوة 100 ٪ نقية ، وتتكامل بسلاسة مع منصة جافا. وبالتالي يسمح لك بتشغيل Python على أي نظام أساسي Java.

يمكنك استخدام الأطر Swing أو Applet أو غيرها من إطارات واجهة المستخدم الرسومية المتاحة لمنصة Java. راجع برامج Java التعليمية لواجهات المستخدم الرسومية والرسومات ثنائية الأبعاد . هناك الكثير من الكتب documentation مثل مرجع API .

إليك تطبيق Hello world Swing من مقدمة إلى Jython .

from javax.swing import *

frame = JFrame("Hello Jython")
label = JLabel("Hello Jython!", JLabel.CENTER)
frame.add(label)
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.setSize(300, 300)
frame.show()

إليك برنامج Jython الصغير من تأليف Todd Ditchendorf الذي يوضح رسم الجسيمات متعددة الخيوط (60 سطرًا).

from __future__ import nested_scopes
import java.lang as lang
import java.util as util
import java.awt as awt
import javax.swing as swing

class Particle:

    def __init__(self,initX,initY):
    self.x = initX
    self.y = initY
    self.rng = util.Random()

    def move(self):
    self.x += self.rng.nextInt(10) - 5
    self.y += self.rng.nextInt(20) - 10

    def draw(self,g2):
    g2.drawRect(self.x,self.y,10,10)

class ParticleCanvas(awt.Canvas):

    def __init__(self,newSize):
    awt.Canvas.__init__(self,size=(newSize,newSize))

    def paint(self,g2):
    for p in self.particles:
        p.draw(g2)

class ParticleApplet(swing.JApplet):

    def init(self):
    self.canvas = ParticleCanvas(self.getWidth())
    self.contentPane.add(self.canvas)

    def start(self):
    n = 10
    particles = []
    for i in range(n):
        particles.append(Particle(150,150))
    self.canvas.particles = particles

    self.threads = []
    for i in range(n):
        self.threads.append(self.makeThread(particles[i]))
        self.threads[i].start()

    def makeThread(self,p):

    class MyRunnable(lang.Runnable):
        def run(this):
        try:
            while 1:
            p.move()
            self.canvas.repaint()
            lang.Thread.sleep(100)
        except lang.InterruptedException:
            return

    return lang.Thread(MyRunnable())

إذا كنت مهتمًا برسم الخطوط والدوائر ، فمن المحتمل أن تقطعها إلى النصف.





cross-platform