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?

Author: Zoran Jankov, 2008-08-05

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
 293
Author: lubos hasko,
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.

Http://www.pyinstaller.org/

Pyinstaller jest oparty na instalatorze Pythona Gordona McMillana. Która nie jest już dostępna.

 57
Author: Jamie,
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.

 14
Author: Michael Twomey,
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.

 10
Author: Tofystedeth,
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.

 5
Author: Matthew Schinckel,
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.

 5
Author: fulmicoton,
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.

 3
Author: Brian Warshaw,
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()

Obraz utworzony z zamieszczonego kodu PySimpleGUI

Jak wyjaśniono w dokumentacji PySimpleGUI , aby zbudować .Plik EXE ty run:

Pyinstaller-WF MyGUIProgram.py

 2
Author: MikeyB,
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

**

 1
Author: Giovanni G. 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

 0
Author: Justin Standard,
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()

GUI podczas pracy

Zobacz dokumentację w appJar site .

Instalacja odbywa się za pomocą pip install appjar z linii poleceń.

 0
Author: shahar_m,
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

!!! KIVY !!!

Byłem zdumiony widząc, że nikt nie wspomniał o 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): {]}

Projekt, nad którym pracuję

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.

 0
Author: Ritveak,
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