Czy Python jest dobrym wyborem do tworzenia interfejsów użytkownika? Jeśli tak, wxPython lub Tkinter?

12

Nie mogę się doczekać opracowania aplikacji komputerowej przy użyciu Pythona. Jestem początkującym i nie mam wystarczającej wiedzy specjalistycznej w języku Python. Jestem również programistą Java. Chociaż mam pewne doświadczenie w tworzeniu interfejsów użytkownika za pomocą Swing, widzę, że aplikacje opracowane na Swing są zbyt cholernie wolne. Może to być jeden z powodów, dla których wiele głównych implementacji jest wykonywanych w C / C ++, podobnie jak w przeglądarkach / grach.

Opracowanie interfejsu użytkownika w C ++ może być lepszym rozwiązaniem, ale wolę wybrać język programowania wysokiego poziomu niż C / C ++. Zdecydowałem się więc na Pythona, zakładając, że będzie on działał lepiej niż Java Swing, ponieważ sam Python jest natywnie zbudowany na C / C ++.

Czy mogę zatem przyjąć założenie, że Python jest lepszy od Java Swing do opracowania interfejsu użytkownika? A może sugerujesz język, który jest lepszy niż Python do tworzenia interfejsów użytkownika? Jeśli w ogóle używam Pythona, który zestaw narzędzi powinienem użyć Tkinter lub wxPython i dlaczego?

Vamsi Emani
źródło
4
Twoje założenia wydają się błędne. Python jest zbudowany na C / C ++, ale podobnie jak JVM (najprawdopodobniej).
user281377,
Po co ograniczać się do Tkinter i wxPython?
Anto
2
Nie próbuję się ograniczać. Miałem wrażenie, że były to dwa dobrze znane zestawy narzędzi do tworzenia GUI.
Vamsi Emani,
Lazarus IDE, darmowy kompilator Pascal i Object Pascal to bardzo szybki i łatwy sposób na tworzenie GUI.
systemovich,

Odpowiedzi:

15

Właśnie rozpocząłem tworzenie aplikacji komputerowej dla systemu Windows, używając Pythona. Używam PyQt .

Jest bardzo łatwy do zainstalowania i uruchomienia. Samouczek tutaj: http://zetcode.com/tutorials/pyqt4/firstprograms/ pokazuje, jak łatwo pokażę kod:

#!/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_())

To otwiera okno.

Wybrałem Python / PyQt zamiast C # / WPF, ponieważ chcę nauczyć się Pythona, a mój pracodawca daje mi czas.

Mój menedżer polecił mi PyQt w stosunku do innych frameworków, ponieważ z jego doświadczenia jest łatwiejszy w użyciu.

Matt Ellen
źródło
2
Jest też pyside ( pyside.org ), patrz stackoverflow.com/questions/1297660/pyside-vs-pyqt
codeape
Użyłem PySide już wcześniej i działa całkiem dobrze. Jednak przyszły rozwój PySide jest trochę niepewny, ponieważ Nokia sprzedała Qt.
jhocking
5

Jeśli chcesz opracować natywny interfejs GUI dla systemu Windows lub OSX, radzę użyć Tkintera (tj. Biblioteki GUI Tk z założonymi ubraniami pytonowymi), ponieważ przybliża cię to znacznie do natywnego wyglądu niż wxPython (wxWidgets dla python) . Nie jest to łatwe do oszacowania, ale moim zdaniem zrzuty ekranu z systemu Windows i OSX . YMMV. Wiem, że Tk ( ważne: z zestawem widżetów Ttk) ma bardzo rodzimy wygląd.

Jeśli tworzysz dla Linuksa… Naprawdę nie mogę szczerze doradzić sobie nawzajem, ponieważ straciłem orientację, jaki jest obecny ulubiony wygląd platformy. :-)

Donal Fellows
źródło
1
Pamiętaj, że Tkinter nie zapewnia wielu powszechnie używanych widżetów po wyjęciu z pudełka. Na przykład, jeśli chcesz pasek postępu, musisz go napisać samodzielnie lub znaleźć kogoś, kto napisał.
James
1
Poczekaj, ale wxWidgets używa natywnych elementów GUI. Przynajmniej robią to wiązania C ++. Nie jestem pewien co do Pythona.
Zhehao Mao,
@ZhehaoMao wxWidgets to połączenie elementów rodzimych i innych niż rodzime. Niektóre elementy wyglądają podobnie do natywnych, ale w rzeczywistości są tworzone na zamówienie dla bardziej jednolitego interfejsu API.
Hubert Grzeskowiak,
3

Powiedziałbym, że to dobry wybór, jeśli już znasz i lubisz Python. W przeciwnym razie użyj języka, który już znasz, jakim jest Java. Jedynym wyjątkiem jest sytuacja, gdy jest to projekt edukacyjny, w którym to przypadku sugerowałbym, że dobrym pomysłem byłoby zdobycie doświadczenia w posługiwaniu się innymi językami.

Chodzi mi o to, że Python nie jest tak naprawdę lepszy ani gorszy od Java dla aplikacji interfejsu użytkownika, więc używaj dowolnego narzędzia, z którym chcesz pracować.

jhocking
źródło
1

Jedyną prawdziwą radą, jaką można udzielić na wszystkie takie pytania, jest: „spróbuj i przekonaj się, czy ci się to podoba” - opinie innych ludzi na temat języków programowania (szczególnie tych, które mogą być ich ulubionymi lub najbardziej znienawidzonymi językami) rzadko są warte wiele .

Jednak moje 5 centów jest warte - do podrzucania szybkich, prostych graficznych interfejsów systemu Windows, kombinacja Pythona i wxWidgets działa bardzo dobrze. Ale jak powiedziałem, wypróbuj to sam - możesz złożyć coś prostego, ale przydatnego w ciągu około godziny, nawet bez dużego doświadczenia w Pythonie (z pewnością nie mam zbyt wiele).

Neil Butterworth
źródło
1

Na wypadek, gdyby ktoś znalazł się tutaj za pośrednictwem wyszukiwarki: możesz szybko wygenerować kilka przykładów Tkinter za pomocą generatora PAGE. Generuje porządny kod, który da ci wyobrażenie o tym, co trzeba zrobić, aby dotrzeć tam, gdzie chcesz się udać. Zdecydowanie wymaga to zgody na ogólność, jak twierdzi autor, ale dla kogoś, kto chce przetestować wody lub uzyskać ogólne pojęcie o tym, dokąd zmierzają, jest to dobre narzędzie. PAGE na SourceForge .

Dziwnie specyficzny
źródło
-1

Myślę, że niektóre typy aplikacji są dość łatwe do pisania w Pythonie.

Na przykład trener zadań jest napisany w języku Python / wxPython. Używają kompilatora Python2exe, takiego jak py2app, py2exe itp., Aby tworzyć wieloplatformowe, wyglądające na pliki wykonywalne.

LennyProgrammers
źródło
-1

Jeśli jesteś ograniczony do programowania w ekosystemie Windows i używasz Visual Studio, rozważ Iron Python. Iron Python to Python plus obiekty .NET.

mkClark
źródło