Come posso creare un'app GUI multipiattaforma direttamente eseguibile utilizzando Python?


263

Python funziona su più piattaforme e può essere utilizzato per applicazioni desktop e Web, quindi concludo che esiste un modo per compilarlo in un eseguibile per Mac, Windows e Linux.

Il problema è che non ho idea da dove iniziare o come scrivere una GUI con essa, qualcuno può far luce su questo e indicarmi la giusta direzione, per favore?

Risposte:


285

Per prima cosa avrai bisogno di alcune librerie GUI con collegamenti Python e poi (se vuoi) qualche programma che convertirà i tuoi script Python in eseguibili standalone.

Librerie GUI multipiattaforma con collegamenti Python (Windows, Linux, Mac)

Certo, ce ne sono molti, ma i più popolari che ho visto in natura sono:

  • Tkinter - basato su Tk GUI toolkit (libreria GUI di fatto standard per python, gratuita per progetti commerciali)
  • WxPython - basato su WxWidgets (popolare, gratuito per progetti commerciali)
  • Qt usando i collegamenti PyQt o Qt per Python . Il primo non è gratuito per progetti commerciali. Quest'ultimo è meno maturo, ma può essere utilizzato gratuitamente.

L'elenco completo è disponibile all'indirizzo http://wiki.python.org/moin/GuiProgramming

Eseguibile singolo (tutte le piattaforme)

  • PyInstaller - il più attivo (potrebbe essere utilizzato anche con PyQt)
  • fbs - se hai scelto Qt sopra

Eseguibile singolo (Windows)

  • py2exe - usato per essere il più popolare

Eseguibile singolo (Linux)

  • Congela : funziona allo stesso modo di py2exe ma si rivolge alla piattaforma Linux

Eseguibile singolo (Mac)

  • py2app - di nuovo, funziona come py2exe ma si rivolge a Mac OS

19
Parlare di pyinstaller per Windows, anziché di py2exe.
log delle modifiche

8
Vale la pena notare che a partire da 4.5 QT sarà sotto LGPL.
CTT

14
... motivo per cui ora dovresti considerare moltissimo l'utilizzo di PySide che è LGPL. È anche più Pythonic dell'API Python 2 di PyQt4.
Chris Morgan,

4
È inoltre possibile aggiungere cx_Freeze , che è multipiattaforma, gestito e supporta Python 3.x.
fbmd,

2
Perché non si fa menzione di Kivy qui? Non è un'opzione valida per questa domanda?
SilSur,

56

Un altro sistema (non ancora menzionato nella risposta accettata) è PyInstaller, che ha funzionato per un mio progetto PyQt quando py2exe non lo avrebbe fatto. L'ho trovato più facile da usare.

http://www.pyinstaller.org/

Pyinstaller si basa sul programma di installazione Python di Gordon McMillan. Che non è più disponibile.


1
E più di 3 anni dopo che questa risposta è stata scritta, pyinstaller STILL non supporta Python 3, né è elencato nella tabella di marcia delle versioni future. Voglio dire, il supporto di AIX e Solaris è davvero più utile di Python 3?
Dave,

11
Supporta ora Python 2.7 e Python 3.3, 3.4 e 3.5.
Katu

4
E 3.6 anche adesso.
Rexcirus,

14

Uno strumento alternativo a py2exe è bbfreeze che genera file eseguibili per Windows e Linux. È più recente di py2exe e gestisce le uova abbastanza bene. Ho scoperto che funziona magicamente meglio senza configurazione per un'ampia varietà di applicazioni.


11

C'è anche PyGTK , che è fondamentalmente un wrapper Python per Gnome Toolkit. Ho trovato più facile avvolgermi in mente rispetto a Tkinter, non avendo praticamente alcuna conoscenza della programmazione della GUI in precedenza. Funziona abbastanza bene e ha dei buoni tutorial. Sfortunatamente non esiste ancora un programma di installazione per Python 2.6 per Windows e potrebbe non durare per un po '.


6

Dato che python è installato su quasi tutti i sistemi operativi non Windows per impostazione predefinita ora, l'unica cosa di cui devi davvero assicurarti è che tutte le librerie non standard che usi siano installate.

Detto questo, è possibile creare eseguibili che includono l'interprete Python e tutte le librerie che si utilizzano. Ciò probabilmente creerà un eseguibile di grandi dimensioni, tuttavia.

MacOS X include anche il supporto nell'IDE Xcode per la creazione di app GUI completamente autonome. Questi possono essere eseguiti da qualsiasi utente che esegue OS X.


6

Per la stessa GUI:

PyQT è praticamente il riferimento.

Un altro modo per sviluppare una rapida interfaccia utente è scrivere un'app Web, farla funzionare localmente e visualizzare l'app nel browser.

Inoltre, se scegli l'opzione Tkinter suggerita da lubos hasko, potresti voler provare portablepy per far funzionare la tua app in ambiente Windows senza Python.


4

Non sono sicuro che questo sia il modo migliore per farlo, ma quando sto implementando le app della GUI di Ruby (non Python, ma ha lo stesso "problema" per quanto riguarda .exe) su Windows, scrivo solo un breve launcher in C # che chiama il mio script principale. Si compila in un eseguibile e quindi ho un eseguibile per l'applicazione.


@Brian Hai visto la tecnica di _why per le app di scarpe a esecuzione automatica? Probabilmente potrebbe essere fatto con programmi non-Shoes.
Adam Lassek,

Per queste app, nessuno dei miei utenti è anonimo. So se hanno il runtime e, in caso contrario, posso installarlo per loro. La preoccupazione principale in questo argomento è come avviare queste applicazioni senza dover aprire un prompt dei comandi e digitare l'eseguibile del runtime seguito dal nome del programma.
Brian Warshaw,

2
# 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

Quindi dovresti usare py2exe, ad esempio, per portare in una cartella tutti i file necessari per eseguire l'app, anche se l'utente non ha Python sul suo PC (sto parlando di Windows ... per il sistema operativo Apple non è necessario di un file eseguibile, credo, dato che viene fornito con Python senza la necessità di installarlo.

Crea questo file

1) Crea un setup.py

con questo codice:

from distutils.core import setup
import py2exe

setup(console=['l4h.py'])

salvalo in una cartella

2) Inserisci il tuo programma nella stessa cartella di setup.py inserisci in questa cartella il programma che vuoi renderlo distribuibile: es: l4h.py

ps: cambia il nome del file (da l4h a tutto quello che vuoi, questo è un esempio)

3) Esegui cmd da quella cartella (sulla cartella, fai clic con il pulsante destro del mouse + maiusc e scegli avvia cmd qui)
4) scrivi in ​​cmd:> python setup.py py2exe
5) nella cartella dist ci sono tutti i file necessari
6) tu può comprimerlo e distribuirlo

Pyinstaller

Installalo da cmd

**

pip install pyinstaller

**

Eseguilo dal cmd dalla cartella in cui si trova il file

**

pyinstaller file.py

**


2

PySimpleGUI avvolge tkinter e funziona su Python 3 e 2.7. Funziona anche su Qt, WxPython e in un browser Web, utilizzando lo stesso codice sorgente per tutte le piattaforme.

Puoi creare GUI personalizzate che utilizzano tutti gli stessi widget che trovi in ​​tkinter (cursori, caselle di controllo, pulsanti di opzione, ...). Il codice tende ad essere molto compatto e leggibile.

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

Immagine creata dal codice PySimpleGUI pubblicato

Come spiegato nella documentazione di PySimpleGUI , per creare il file .EXE che si esegue:

pyinstaller -wF MyGUIProgram.py


1

Non è necessario compilare Python per Mac / Windows / Linux. È un linguaggio interpretato, quindi devi semplicemente avere l'interprete Python installato sul sistema che preferisci (è disponibile per tutte e tre le piattaforme).

Per quanto riguarda una libreria GUI che funziona su più piattaforme, la libreria di widget Tk / Tcl di Python funziona molto bene e credo sia sufficientemente multipiattaforma.

Tkinter è l'interfaccia di Python per Tk / Tcl

Dalla pagina web del progetto python:

Tkinter non è l'unico toolkit GuiProgramming per Python. È tuttavia il più comunemente usato e quasi l'unico che è portatile tra Unix, Mac e Windows


4
Quindi, come realizzeresti un pacchetto di installazione da distribuire su sistemi di persone che desiderano solo un'installazione in 1 passaggio (ad esempio, fare doppio clic su un singolo pacchetto di installazione in Windows)?
Craig McQueen,

Per questo ci sono alcuni approcci che conosco: probabilmente scriveresti un programma di installazione in script batch o compilato per il sistema di destinazione che lascerebbe cadere i file necessari da qualche parte e installerebbe le librerie e i runtime necessari nel processo.
Justin Standard,

1
Installare Python come parte della tua installazione sarebbe un po 'complicato, perché dovresti affrontare la possibilità che una versione errata di Python sia già installata. Dovresti installarlo fianco a fianco, in modo tale che l'applicazione possa accedere alla versione appena installata di Python, ma tutte le applicazioni esistenti hanno continuato a utilizzare la vecchia versione di Python. (cioè senza fare confusione su cose come l'associazione di file .py o il PERCORSO)
Jonathan Hartley,

Più probabilmente il tuo installer verificherebbe l'esistenza della versione corretta di Python e, se lo trovasse, lo userebbe, altrimenti installerebbe python come parte del processo di installazione.
Justin Standard,

Giusto - ma quella seconda opzione 'altrimenti installa python come parte del processo di installazione', è esattamente ciò di cui sto parlando. Sarebbe complicato, per i motivi che ho indicato.
Jonathan Hartley,

0

È possibile utilizzare appJarper lo sviluppo della GUI di base.

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 durante l'esecuzione

Vedi la documentazione sul sito appJar .

L'installazione viene eseguita pip install appjardalla riga di comando.


0

!!! KIVY !!!

Sono stato sorpreso di vedere che nessuno ha menzionato Kivy !!!

Una volta ho fatto un progetto usando Tkinter, anche se sostengono che è migliorato molto, mi dà ancora la sensazione di Windows 98, quindi sono passato a Kivy .

Ho seguito una serie di tutorial se aiuta ...

Solo per dare un'idea di come appare Kivy, guarda questo (Il progetto a cui sto lavorando):

Il progetto a cui sto lavorando

E ci sto lavorando da appena una settimana! I vantaggi per Kivy che chiedi? Controlla questo

Il motivo per cui ho scelto questo è, il suo aspetto e che può essere utilizzato anche nei dispositivi mobili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.