Tworzenie bezpośrednio wykonywalnych wieloplatformowych aplikacji GUI przy użyciu Pythona
Python działa na wielu platformach i może być używany w aplikacjach desktopowych i internetowych, dlatego wnioskuję, że istnieje jakiś sposób, aby skompilować go do pliku wykonywalnego dla Mac, Windows i Linux.
Problem w tym, że nie mam pojęcia od czego zacząć i jak z nim napisać GUI, czy ktoś może rzucić na to trochę światła i wskazać mi właściwy kierunek?
12 answers
Najpierw będziesz potrzebował biblioteki GUI z powiązaniami Pythona, a następnie (jeśli chcesz) jakiegoś programu, który przekonwertuje Twoje Skrypty Pythona na samodzielne pliki wykonywalne.
Wieloplatformowe biblioteki GUI z powiązaniami Pythona (Windows, Linux, Mac)
Oczywiście, jest ich wiele, ale najbardziej popularne, które widziałem w wild są:
- Tkinter - oparty na TK GUI toolkit (de facto standardowa biblioteka GUI dla Pythona, darmowa dla celów komercyjnych projekty)
- wxPython - oparty na wxWidgets (popularny, darmowy dla projektów komercyjnych)
- Qt używając wiązań PyQt lub Qt dla Pythona . Ten pierwszy nie jest darmowy dla projektów komercyjnych. Ten ostatni jest mniej dojrzały, ale można go używać za darmo.
Pełna lista znajduje się na http://wiki.python.org/moin/GuiProgramming
Pojedynczy plik wykonywalny (wszystkie platformy)
-
PyInstaller - najbardziej aktywny (może być również używany z
PyQt
) - fbs - jeśli wybrałeś Qt powyżej
Single executable (Windows)
- py2exe - kiedyś najpopularniejszy
Pojedynczy plik wykonywalny (Linux)
- Freeze - działa tak samo jak py2exe, ale działa na platformę Linux
Pojedynczy plik wykonywalny (Mac)
- py2app - ponownie działa jak py2exe, ale celuje w Mac OS
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-02 08:22:28
Innym systemem (Nie wymienionym jeszcze w zaakceptowanej odpowiedzi) jest PyInstaller, który pracował dla mojego projektu PyQt, gdy py2exe by tego nie zrobił. Okazało się, że jest łatwiejszy w użyciu.
Pyinstaller jest oparty na instalatorze Pythona Gordona McMillana. Która nie jest już dostępna.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-27 14:52:52
Alternatywnym narzędziem dla py2exe jest bbfreeze , które generuje pliki wykonywalne Dla windows i Linuksa. Jest nowszy od py2exe i całkiem dobrze radzi sobie z jajami. Odkryłem, że magicznie działa lepiej bez konfiguracji dla szerokiej gamy aplikacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-15 11:56:02
Istnieje również PyGTK , który jest w zasadzie opakowaniem Pythona dla zestawu narzędzi Gnome. Okazało się, że łatwiej ogarnąć mój umysł niż Tkinter, pochodząc z prawie żadnej wiedzy na temat programowania GUI wcześniej. Działa całkiem dobrze i ma kilka dobrych samouczków. Niestety nie ma jeszcze instalatora dla Pythona 2.6 Dla Windows i może nie być przez jakiś czas.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-05 15:53:19
Ponieważ python jest domyślnie zainstalowany na prawie każdym systemie operacyjnym innym niż Windows, jedyną rzeczą, której naprawdę musisz się upewnić, jest to, że wszystkie niestandardowe biblioteki, których używasz, są zainstalowane.
Powiedziawszy to, możliwe jest zbudowanie plików wykonywalnych zawierających interpreter Pythona i dowolne biblioteki, których używasz. Może to jednak spowodować powstanie dużego pliku wykonywalnego.
MacOS X obsługuje nawet Xcode IDE do tworzenia pełnych samodzielnych aplikacji GUI. Mogą być prowadzone przez dowolne user running OS X.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-06 00:29:36
Dla samego GUI:
PyQT {[4] } jest w zasadzie punktem odniesienia.
Innym sposobem na stworzenie szybkiego interfejsu użytkownika jest napisanie aplikacji internetowej, uruchom ją lokalnie i wyświetl aplikację w przeglądarce.
Plus, jeśli wybierzesz opcję Tkinter sugerowaną przez Lubosa hasko możesz spróbować portablepy, aby Twoja aplikacja była uruchomiona w środowisku Windows bez Pythona.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-19 09:45:44
Nie jestem pewien, czy jest to najlepszy sposób, aby to zrobić, ale kiedy wdrażam Aplikacje Ruby GUI (Nie Python, ale ma ten sam "problem", o ile .exe są zaniepokojeni) na Windows, po prostu napisać krótki launcher w C#, który wywołuje mój skrypt główny. Kompiluje się do pliku wykonywalnego, a następnie mam program wykonywalny.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-15 12:00:37
PySimpleGUI owija tkintera i działa na Pythonie 3 i 2.7. Działa również na Qt, WxPython i w przeglądarce internetowej, używając tego samego kodu źródłowego dla wszystkich platform.
Możesz tworzyć niestandardowe GUI, które wykorzystują wszystkie te same widżety, które znajdziesz w tkinter (suwaki, pola wyboru, przyciski opcji, ...). Kod wydaje się być bardzo zwarty i czytelny.
#!/usr/bin/env python
import sys
if sys.version_info[0] >= 3:
import PySimpleGUI as sg
else:
import PySimpleGUI27 as sg
layout = [[ sg.Text('My Window') ],
[ sg.Button('OK')]]
window = sg.Window('My window').Layout(layout)
button, value = window.Read()
Jak wyjaśniono w dokumentacji PySimpleGUI , aby zbudować .Plik EXE ty run:
Pyinstaller-WF MyGUIProgram.py
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-31 20:42:29
# I'd use tkinter for python 3
import tkinter
tk = tkinter.Tk()
tk.geometry("400x300+500+300")
l = Label(tk,text="")
l.pack()
e = Entry(tk)
e.pack()
def click():
e['text'] = 'You clicked the button'
b = Button(tk,text="Click me",command=click)
b.pack()
tk.mainloop()
# After this I would you py2exe
# search for the use of this module on stakoverflow
# otherwise I could edit this to let you know how to do it
Py2exe
Następnie należy użyć py2exe, na przykład, aby umieścić w jednym folderze wszystkie pliki potrzebne do uruchomienia aplikacji, nawet jeśli użytkownik nie ma Pythona na swoim komputerze (mówię o windows... dla apple os nie ma potrzeby pliku wykonywalnego, jak sądzę, ponieważ pochodzi z Pythona w nim bez potrzeby instalowania go.
Utwórz ten plik
1) Utwórz setup.py
Z tym kodem:
from distutils.core import setup
import py2exe
setup(console=['l4h.py'])
Zapisz go w folderze
2) Umieść swój program w ten sam folder setup.py umieść w tym folderze program, który ma być dystrybuowalny: es: l4h.py
Ps: Zmień nazwę pliku (z l4h na cokolwiek chcesz, to jest przykład)
3) uruchom cmd z tego folderu (w folderze kliknij prawym przyciskiem myszy + shift i wybierz Uruchom cmd tutaj)
4) napisz w cmd: > python setup.py py2exe
5) w folderze dist znajdują się wszystkie potrzebne pliki
6) możesz go spakować i rozprowadzić
Pyinstaller
Install it od cmd
**
Pip install pyinstaller
**
Uruchom go z cmd z folderu, w którym znajduje się plik
**
Pyinstaller file.py
**
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-02 10:17:30
Nie musisz kompilować Pythona dla Mac/Windows/Linux. Jest to język interpretowany, więc po prostu musisz mieć zainstalowany interpreter Pythona w wybranym systemie(jest on dostępny dla wszystkich trzech platform).
Jeśli chodzi o bibliotekę GUI, która działa między platformami, to biblioteka widżetów Pythona TK/Tcl działa bardzo dobrze i uważam, że jest wystarczająco wieloplatformowa.
Tkinter jest interfejsem Pythona do Tk / Tcl
Z projektu python strona internetowa:
Tkinter nie jest jedynym Guiprogramowaniem zestaw narzędzi dla Pythona. Jest to jednak najczęściej używany, a prawie tylko taki, który jest przenośny między Unix, Mac i Windows
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-05 22:52:16
Możesz użyć appJar
do podstawowego tworzenia GUI.
from appJar import gui
num=1
def myfcn(btnName):
global num
num +=1
win.setLabel("mylabel", num)
win = gui('Test')
win.addButtons(["Set"], [myfcn])
win.addLabel("mylabel", "Press the Button")
win.go()
Zobacz dokumentację w appJar site .
Instalacja odbywa się za pomocą pip install appjar
z linii poleceń.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-08 10:21:11
Byłem zdumiony widząc, że nikt nie wspomniał o Kivy!!!!!! KIVY !!!
Kiedyś robiłem projekt przy użyciu Tkintera, chociaż twierdzą, że znacznie się poprawił, nadal daje mi poczucie windows 98, więc przerzuciłem się na Kivy .
Śledziłem serię tutoriali jeśli to pomoże...
Aby dać wyobrażenie o tym, jak wygląda kivy, zobacz to (projekt, nad którym pracuję on): {]}
I pracuję nad tym od zaledwie tygodnia ! Jakie korzyści dla Kivy? Sprawdź to
Powodem, dla którego wybrałem ten produkt, jest jego wygląd i to, że może być używany również w telefonach komórkowych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-10 07:24:51