2009-06-24 13 views
5

Python hat eine Menge GUI-Bibliotheken: tkinter, wxWidgets, pyGTK usw. Aber diese GUI muss installiert werden und ziemlich schwer, daher ist es ein wenig komplex, GUI-Python-Anwendungen für Endbenutzer bereitzustellen, die auf erwähnten GUI-Bibliotheken weiterleiten.Pure Python GUI Bibliothek?

Kürzlich habe ich über Python-integrierte Ctypes nachgedacht. Theoretisch ist es möglich, eine reine Python-GUI-Bibliothek zu erstellen, die ctypes für Windows (windll.user32.CreateWindowEx usw.), natives pyObjC für MacOS und pyGTK/pyQt für gnome/kde verwendet. Existiert eine solche Bibliothek? Wenn nicht, wie denkst du, was mit einer Idee nicht stimmt?

+1

Tkinter muss nicht installiert werden, es ist Teil einer Standard-Distribution von Python. –

+0

Nur an Fenstern und Macos. Es muss auf Ubuntu etc. installiert werden. – grigoryvp

+0

Sie meinen etwas wie "Wx in Python umschreiben"? Warum denkst du, es wäre besser als das, was schon gemacht wurde? – nosklo

Antwort

10

Der Weg des geringsten Aufwands und der besten Ergebnisse wäre, zu erfahren, wie eine App mithilfe dieser vorhandenen GUI-Bibliotheken implementiert werden kann.

+1

+1: "ziemlich schwer" ist eine Übertreibung. In den meisten Fällen benötigen Sie all dies, um eine GUI zu erstellen. –

2

Ich denke es geht darum, das Rad nicht zu erfinden. Es würde funktionieren, aber warum sollten Sie das tun? Alle von Ihnen erwähnten GUI-Bibliotheken sind stabil und mehr oder weniger kugelsicher.

Ich könnte mir vorstellen, dass es einige Experimente gibt, die eine reine Python-Bibliothek implementieren. Aber ich habe nie einen gesehen. Alles an GUIs ist harte Arbeit und eine reine Python-Bibliothek hätte keine so große Zielgruppe.

3

Zum einen verwenden alle diese Bibliotheken verschiedene Abstraktionen, so dass alles, was mit allen von ihnen funktioniert, wahrscheinlich mit dem kleinsten gemeinsamen Nenner oder endet, was jede Menge Arbeit erfordert in vollen Zügen.

4

Nicht wirklich sicher, was Sie mit "Schwergewicht" meinen.

wx verwendet native Steuerelemente auf jeder Plattform und ist in Python so einfach zu verwenden, wie ich es mir vorstellen kann; Schließlich sind GUI-APIs komplex, weil GUIs komplex werden können.

Ich denke wx, für den Aufwand, der erforderlich ist, um ein Fenster zu bauen und die Qualität dessen, was auf dem Bildschirm angezeigt wird, ist großartig. Ich denke nicht, dass du wahrscheinlich selbst etwas besseres machst.

8

Tkinter ist Teil der Python-Standard-Distribution und wird standardmäßig installiert. Erwarten Sie, dass Sie dies bei allen Python-Installationen finden, bei denen es zuerst eine grafische Anzeige gibt.

+1

+1. Wenn Sie mehr Widget benötigen, gibt es einige Erweiterungen und Plugins für TKinter, die leicht sind und das Toolkit dramatisch verbessern werden. Aber, trotzdem, die UI ist hässlich ... –

+6

Der "ui ist hässlich" Kommentar trifft meistens nur auf alte Versionen von Tkinter zu. Modern Tk verwendet native Widgets auf Plattformen, die es unterstützen. Hässliche Tkinter-Anwendungen sind heutzutage eher eine Demonstration von Programmierer-Talent als von Toolkit-Einschränkungen. Weitere Informationen zu dieser Diskussion finden Sie unter http://stackoverflow.com/questions/349409/why-are-tk-guis-considered-ugly –

+1

Tkinter wird standardmäßig nur für Windows und MacOS installiert. Es muss auf Ubuntu usw. installiert werden. – grigoryvp

5

Der Begriff "pure python gui library" ist falsch, weil Sie letztendlich Aufrufe und Widgets auf Systemebene verwenden, möglicherweise durch ctypes, aber das ändert nichts daran, dass Sie wxPython werden, wenn Sie mit der Implementierung Ihrer Idee beginnen

5

Grundsätzlich ist es falsch, dass es Räder neu erfindet, die bereits von den Herstellern von GTK, Tk, Wx, QT und ihresgleichen gemacht wurden. Während eine reine Python-GUI technisch machbar ist und Projekte wie anygui etwas Ähnliches versuchen, gibt es relativ wenig zu gewinnen.

Die nativen Toolkits werden auch besser die Unterschiede zwischen den zugrunde liegenden Plattformen (native Dialoge usw.) abdecken. Dies bedeutet, dass Sie mit den Toolkits eine portable Anwendung schreiben können, die wenig oder keinen plattformspezifischen Code benötigt - der Großteil davon wird vom zugrunde liegenden Toolkit abstrahiert.

Verteilungsmechanismen wie py2exe unter Windows und jede der Linux-Methoden ermöglichen es Ihnen, DLLs mit der Anwendung zu bündeln, so dass Sie ein Installationsprogramm machen können, das alle nativen Komponenten entfernt, die es benötigt. Es gibt jedoch keine generische plattformübergreifende Möglichkeit, dies zu tun, daher müssen Sie separate Installationsprogramme für jede Plattform verwalten.

10

ab Python 2.7 und 3.1 wird Tk viel besser aussehen.

http://docs.python.org/dev/whatsnew/2.7.html#ttk-themed-widgets-for-tk

„Tcl/Tk 8.5 eine Reihe von Themen-Widgets enthält, die grundlegende Tk-Widgets neu implementieren, sondern eine anpassbare Aussehen haben und kann daher eng mehr ähneln der nativen Plattform des Widgets. Dieses Widget-Set ursprünglich genannt Tile, wurde aber in Ttk (für "themed Tk") umbenannt, nachdem es zu Tcl/Tck Version 8.5 hinzugefügt wurde. "