2010-04-10 8 views
16

Ich möchte eine Anwendung erstellen, die auf dem Computer des Benutzers ausgeführt wird, eine eigenständige Anwendung mit Installation und was nicht, aber ich möchte die Schnittstelle ein Browser sein, entweder intern und angezeigt als Betriebssystemfenster oder extern zugänglich mit der Browser (dh ein http-Server).Python Desktop-Anwendung mit dem Browser als Schnittstelle?

Der Grund wäre, weil ich ein wenig über Python weiß, aber ich denke, ich kann verwalten, solange ich einige grundlegende Wurzeln habe, die ich verwenden und manipulieren kann, und das wäre HTML, CSS und Javascript.

Ich muss noch ein gutes GUI-Tool finden, das ich verwenden kann, und immer die Idee aufgeben, nachdem ich versucht habe, herumzualbern und schließlich nichts zu bekommen.

Antwort

7

Python bietet zwei Dinge, die von Ihrem Interesse sein sollten:

  • einen Web-Server
  • eine standartized Schnittstelle für Web-Anwendungen, die so genannt WSGI

es also in der Standardbibliothek relativ ist einfach, eine Webschnittstelle zu Ihrer Anwendung hinzuzufügen. Zum Beispiel haben Sie in Mercurial (dem Versionierungssystem) einen Befehl hg serve, der einen Webserver startet.

Um zu sehen, Python einen Web-Server und eine WSGI App starten, gerade tun:

python -m 'wsgiref.simple_server' 

Sie an dem wsgiref Quellcode oder ein WSGI Tutorial aussehen können eine einfache Anwendung zu tun.

Danach können Sie einen Web-Framework verwenden (für Templating & co), aber das ist eine andere Frage ...

+1

Der Vollständigkeit halber sollte erwähnt werden, dass die Ausführung des Backends als localhost wsgiref http-Server bedeutet, dass es für jeden Benutzer verfügbar ist, der an der Maschine angemeldet ist und nicht nur für den Benutzer, der den Server startet. Wenn Sie der einzige Benutzer sind, ist das natürlich kein Problem. vielleicht könnte es sogar als ein Feature angesehen werden, wenn es mehrere Benutzer gibt. –

2

Sie könnten Pyjamas verwenden. Es ist ein Port von Google Web Toolkit zu Python, was im Grunde bedeutet, dass Sie in Python schreiben und es wird in HTML und JS kompiliert.

+0

Es ist tot. Klingt gut, aber ... – Eli

+5

Außer es ist nicht, seit seiner letzten Commit war nur ein paar Wochen her. –

+0

hmmm, die Seite war tot letzte Nacht, als ich überprüft habe :) jetzt funktioniert es ... – Eli

1

Es gibt viele hervorragende GUI-Tools für die Art und Weise, wie Sie Ihre GUI erstellen möchten - HTML, CSS und Javascript. Wenn Sie nichts wissen, fragen Sie in einer separaten Frage mit den richtigen Tags. Die Python-Seite in einer solchen Anordnung sollte keine eigene GUI haben, sondern nur eine Unterklasse des HTTP-Servers der Python-Standardbibliothek ausführen, die nur die HTML-, CSS- und JS-Dateien und Daten über JSON für andere URLs bereitstellt dass der JS mit Ajax-Techniken erreichen kann, im Wesentlichen die Implementierung von Speicher- und Geschäftslogi - also ist es bei weitem nicht offensichtlich, was "GUI-Tool" Sie könnten dafür wollen ?!

Entwickeln Sie einfach die Python-Seite selbst (z. B. mit IDLE, Wingware, SPE oder was auch immer Sie möchten) und das HTML/CSS/Javascript getrennt mit einem eigenen "GUI-Tool". Alles, was Python mit diesen Dateien macht, ist statisch dienen sie schließlich,.

Sie einige Python Seite Templat, wie Mojo & c der Verwendung denken könnte, aber meine Empfehlung ist, dass zu vermeiden: vielmehr mit dem „Thin Server-Architektur“ den ganzen Weg zu gehen, der Python-Seite einen RESTful-Server machen von Business-Logik und Speicher-Schichten, und tun alle die GUI arbeiten im Browser statt.

+1

Dies ist eine Möglichkeit, aber andere Sprachen (zB .NET) haben Bibliotheken, die einfache Einbettung ermöglichen eines Browsers in ein Fenster und Scripting oder Kommunikation über eine einfache API. Ich habe das selbst mehrmals nützlich gefunden, konnte aber in Python keine Entsprechung finden. wxPython hat ein Browser-Widget, aber es ist ziemlich veraltet und unterstützt nicht einmal Skripting IIRC. Tk hat nichts. Es gibt eine Webkit-Einbettung für eines der GUI-Toolkits, aber es ist ein schwerer Schmerz im Hinterkopf zu kompilieren und zu integrieren. –

+0

Ich denke, ich suche nach was Max spricht, ein eingebetteter Browser, der direkt über JS API mit der Desktop-Anwendung kommunizieren kann. – Eli

0

Sind Sie mit einem Web-Browser zurückgreifen, nur weil Sie Schwierigkeiten mit Python gehabt haben Widget Toolkits, wie Tkinter, wxpython und pyqt?

Haben Sie versucht Qt Designer? Es ist ein grafischer GUI-Designer, der es sehr schnell und einfach macht, großartig aussehende GUI's zu entwickeln. Es wird automatisch mit PyQt installiert.

http://www.riverbankcomputing.co.uk/software/pyqt/download

+0

Ja und nein. Ich habe ein Problem mit den GUI-Toolkits, und für mich als Web-Entwickler ist es viel einfacher, mit Standard-HTML und JavaScript zu beginnen. Funktioniert Qt nicht nur für nicht-kommerzielle Anwendungen, wenn ich keine Qt-Lizenz habe? – Eli

+1

@Eli, Qt verfügt über eine duale LGPL/Kommerzielle Lizenz. Wenn Sie planen, Ihre Anwendung zu veröffentlichen, müssen Sie sie entweder öffnen oder eine kommerzielle Lizenz erhalten. –