Ist Python eine gute Wahl, um Benutzeroberflächen zu entwickeln? Wenn ja, wxPython oder Tkinter?

12

Ich freue mich darauf, eine Desktop-Anwendung mit Python zu entwickeln. Ich bin ein Anfänger und ich habe keine ausreichenden Kenntnisse in Python. Ich bin auch ein Java-Programmierer. Obwohl ich Erfahrung im Erstellen von Benutzeroberflächen mit Swing habe, sehe ich, dass auf Swing entwickelte Apps zu langsam sind. Nun, dies könnte ein Grund sein, warum viele der Hauptimplementierungen in C / C ++ wie in Browsern / Spielen durchgeführt werden.

Das Entwickeln einer Benutzeroberfläche in C ++ ist möglicherweise eine bessere Option, aber ich bevorzuge die Verwendung einer höheren Programmiersprache als C / C ++. Daher habe ich mich für Python entschieden, vorausgesetzt, es würde eine gute Leistung gegenüber Java Swing erbringen, da Python selbst nativ auf C / C ++ aufbaut.

Kann ich mit dieser Annahme weitermachen, dass Python besser als Java Swing ist, um eine Benutzeroberfläche zu entwickeln? Oder schlagen Sie eine Sprache vor, die besser als Python ist, um Benutzeroberflächen zu entwickeln? Wenn ich überhaupt mit Python weitermache, welches Toolkit sollte ich mit Tkinter oder wxPython verwenden und warum?

Vamsi Emani
quelle
4
Ihre Annahmen scheinen fehlerhaft zu sein. Python basiert auf C / C ++, aber auch die JVM (höchstwahrscheinlich).
user281377
Warum beschränken Sie sich auf Tkinter und wxPython?
Anto
2
Ich versuche nicht, mich einzuschränken. Ich hatte den Eindruck, dass dies die beiden bekannten Toolkits für die GUI-Entwicklung waren.
Vamsi Emani
Die Lazarus IDE, der Free Pascal Compiler und Object Pascal bieten eine sehr schnelle und einfache Möglichkeit, GUIs zu entwickeln.
Systemovich

Antworten:

15

Ich habe gerade mit der Entwicklung einer Windows-Desktop-App unter Verwendung von Python begonnen. Ich benutze PyQt .

Es ist sehr einfach zu installieren und in Betrieb zu nehmen. Das Tutorial hier: http://zetcode.com/tutorials/pyqt4/firstprograms/ zeigt, wie einfach ich den Code zeigen werde:

#!/usr/bin/python

# simple.py

import sys
from PyQt4 import QtGui

app = QtGui.QApplication(sys.argv)

widget = QtGui.QWidget()
widget.resize(250, 150)
widget.setWindowTitle('simple')
widget.show()

sys.exit(app.exec_())

Das öffnet dir ein Fenster.

Ich habe Python / PyQt gegenüber C # / WPF gewählt, weil ich Python lernen möchte und mein Arbeitgeber mir die Zeit gibt.

Mein Manager hat PyQt mir gegenüber anderen Frameworks empfohlen, da es seiner Erfahrung nach einfacher zu verwenden ist.

Matt Ellen
quelle
2
Es gibt auch pyside ( pyside.org ), siehe stackoverflow.com/questions/1297660/pyside-vs-pyqt
codeape
Ich habe PySide schon einmal benutzt und es funktioniert ziemlich gut. Die zukünftige Entwicklung von PySide ist jedoch ein wenig ins Wanken geraten, da Nokia Qt verkauft hat.
jhocking
5

Wenn Sie eine native GUI für Windows oder OSX entwickeln möchten, empfehle ich die Verwendung von Tkinter (dh der GUI-Bibliothek Tk mit Python-Kleidung), da Sie damit dem nativen Look viel näher kommen als mit wxPython (wxWidgets für Python). . Ich finde es nicht einfach zu quantifizieren, aber für mich sind die Windows- und OSX-Screenshots . YMMV. Ich weiß, dass Tk ( wichtig: mit dem Ttk-Widget-Set) sehr stark einheimisch aussieht.

Wenn Sie für Linux entwickeln ... kann ich nicht wirklich ehrlich voneinander raten, da ich den Überblick darüber verloren habe, wie die derzeitige bevorzugte Plattform aussieht. :-)

Donal Fellows
quelle
1
Beachten Sie, dass Tkinter viele häufig verwendete Widgets nicht sofort zur Verfügung stellt. Wenn Sie beispielsweise einen Fortschrittsbalken wünschen, müssen Sie entweder einen selbst schreiben oder einen anderen finden.
James
1
Warten Sie, aber wxWidgets verwendet native GUI-Elemente. Zumindest die C ++ - Bindungen. Bei Python bin ich mir nicht so sicher.
Zhehao Mao
@ZhehaoMao wxWidgets ist eine Mischung aus nativen und nicht nativen Elementen. Einige Elemente ähneln den nativen Elementen, sind jedoch speziell für eine einheitlichere API entwickelt worden.
Hubert Grzeskowiak
3

Ich würde sagen, es ist eine gute Wahl, wenn Sie Python bereits kennen und mögen. Verwenden Sie andernfalls die Sprache, die Sie bereits kennen, nämlich Java. Die einzige Ausnahme ist, wenn es sich um ein Lernprojekt handelt. In diesem Fall würde ich empfehlen, Erfahrungen mit anderen Sprachen zu sammeln.

Mein Punkt hier ist, dass Python nicht wirklich besser oder schlechter als Java für UI-Anwendungen ist. Verwenden Sie also jedes Tool, mit dem Sie gerne arbeiten.

jhocking
quelle
1

Der einzige wirkliche Ratschlag, den man bei Fragen wie diesen geben kann, lautet: "Probieren Sie es aus und sehen Sie, ob es Ihnen gefällt" - die Meinungen anderer Leute zu Programmiersprachen (insbesondere zu den geliebtesten oder am meisten gehassten Sprachen) sind selten viel wert .

Allerdings sind meine 5 Cent wert - für schnelle und einfache Windows-GUIs funktioniert die Kombination aus Python und wxWidgets sehr gut. Aber wie gesagt, probieren Sie es selbst aus - Sie können in ungefähr einer Stunde etwas Einfaches, aber Nützliches zusammenstellen, auch ohne viel Python-Erfahrung (ich habe mit Sicherheit nicht viel).

Neil Butterworth
quelle
1

Für den Fall, dass jemand über eine Suchmaschine hierher kommt: Mit dem PAGE-Generator können Sie schnell einige Tkinter-Beispiele erstellen. Es generiert einen anständigen Code, der Ihnen eine Vorstellung davon gibt, was erforderlich ist, um dahin zu gelangen, wohin Sie möchten. Es erfordert definitiv, dass Sie sich mit der Allgemeinheit abfinden, wie der Autor feststellt, aber für jemanden, der das Wasser testen oder einen allgemeinen Eindruck davon bekommen möchte, wohin es geht, ist es ein gutes Werkzeug. SEITE auf SourceForge .

Seltsamerweise
quelle
-1

Ich denke, bestimmte Arten von Anwendungen lassen sich in Python ziemlich gut verwalten.

Zum Beispiel ist Task Coach in Python / wxPython geschrieben. Sie verwenden einen Python2exe-Compiler wie py2app, py2exe usw., um plattformübergreifende, nativ aussehende ausführbare Dateien zu erstellen.

LennyProgrammierer
quelle
-1

Wenn Sie sich auf die Entwicklung im Windows-Ökosystem beschränken und Visual Studio verwenden möchten, sollten Sie Iron Python in Betracht ziehen. Iron Python ist Python plus .NET-Objekte.

mkClark
quelle