user-interface instalar - ¿Cómo puedo crear una aplicación de GUI multiplataforma ejecutable directamente usando Python?




software librerias (10)

No estoy seguro de que esta sea la mejor manera de hacerlo, pero cuando estoy implementando aplicaciones GUI de Ruby (no Python, pero tiene el mismo "problema" en lo que respecta a .exe) en Windows, solo escribo un Lanzador corto en C # que llama a mi script principal. Se compila en un ejecutable, y luego tengo una aplicación ejecutable.

Python funciona en múltiples plataformas y se puede usar para aplicaciones de escritorio y web, por lo que concluyo que hay alguna forma de compilarlo en un ejecutable para Mac, Windows y Linux.

El problema es que no tengo idea de por dónde empezar o cómo escribir una GUI con él. ¿Alguien puede arrojar algo de luz sobre esto y señalarme la dirección correcta, por favor?


PySimpleGUI ajusta tkinter y funciona en Python 3 y 2.7. Puede crear GUI personalizadas que utilicen todos los mismos widgets que se encuentran en tkinter (controles deslizantes, casillas de verificación, botones de radio, ...). El código tiende a ser muy compacto y legible.

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

Como se explica en la documentación de PySimpleGUI , para compilar el archivo .EXE que ejecuta:

pyinstaller -wF MyGUIProgram.py


Puedes usar appJar para el desarrollo básico de 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()

Ver documentación en el sitio de la aplicación .

La instalación se realiza con pip install appjar desde la línea de comandos.


# 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

Entonces deberías usar py2exe, por ejemplo, para traer en una carpeta todos los archivos necesarios para ejecutar la aplicación, incluso si el usuario no tiene python en su computadora (estoy hablando de ventanas ... para Apple OS no hay necesidad de un archivo ejecutable, creo, ya que viene con python en él sin necesidad de instalarlo.

Crear este archivo

1) Crear un setup.py

con este código:

from distutils.core import setup
import py2exe

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

guárdalo en una carpeta

2) Coloque su programa en la misma carpeta de setup.py ponga en esta carpeta el programa que desea distribuir: es: l4h.py

ps: cambia el nombre del archivo (de l4h a lo que quieras, es un ejemplo)

3) Ejecute cmd desde esa carpeta (en la carpeta, haga clic con el botón derecho + shift y elija iniciar cmd aquí)
4) escribe en cmd:> python setup.py py2exe
5) en la carpeta dist hay todos los archivos que necesitas
6) Puedes zipearlo y distribuirlo.

Pyinstaller

Instálalo desde cmd

**

pip instalar pyinstaller

**

Ejecútelo desde el cmd desde la carpeta donde está el archivo.

**

pyinstaller file.py

**


Para la propia GUI:

PyQT es más o menos la referencia.

Otra forma de desarrollar una interfaz de usuario rápida es escribir una aplicación web, ejecutarla localmente y mostrarla en el navegador.

Además, si opta por la opción Tkinter sugerida por lubos hasko, es posible que desee probar portablepy para que su aplicación se ejecute en un entorno Windows sin Python.


También está PyGTK , que es básicamente un envoltorio de Python para el Kit de herramientas Gnome. Me ha resultado más fácil envolver mi mente que Tkinter, ya que no conocía la programación de GUI anteriormente. Funciona bastante bien y tiene algunos buenos tutoriales. Desafortunadamente, todavía no hay un instalador para Python 2.6 para Windows, y puede que no sea por un tiempo.


No es necesario compilar python para Mac / Windows / Linux. Es un lenguaje interpretado, por lo que simplemente necesita tener el intérprete de Python instalado en el sistema de su elección (está disponible para las tres plataformas).

En cuanto a una biblioteca GUI que funciona en múltiples plataformas, la biblioteca de widgets Tk / Tcl de Python funciona muy bien, y creo que es una plataforma multiplataforma.

Tkinter es la interfaz de Python para Tk / Tcl

Desde la página web del proyecto python:

Tkinter no es el único kit de herramientas GuiProgramming para Python. Sin embargo, es el más usado, y casi el único portátil entre Unix, Mac y Windows.


Como Python está instalado en casi todos los sistemas operativos que no son Windows de forma predeterminada ahora, lo único que realmente necesita asegurarse es que todas las bibliotecas no estándar que utiliza están instaladas.

Dicho esto, es posible crear ejecutables que incluyan el intérprete de Python y cualquier biblioteca que use. Sin embargo, es probable que esto cree un ejecutable grande.

MacOS X incluso incluye soporte en Xcode IDE para crear aplicaciones GUI completamente independientes. Estos pueden ser ejecutados por cualquier usuario que ejecute OS X.


Primero necesitará una biblioteca de GUI con enlaces de Python y luego (si lo desea) algún programa que convertirá sus scripts de Python en ejecutables independientes.

Bibliotecas GUI multiplataforma con enlaces Python (Windows, Linux, Mac)

Por supuesto, hay muchos, pero los más populares que he visto en la naturaleza son:

La lista completa está en http://wiki.python.org/moin/GuiProgramming

Ejecutable individual (todas las plataformas)

Ejecutable individual (Windows)

  • py2exe - solía ser el más popular

Ejecutable único (Linux)

  • Freeze : funciona de la misma manera que py2exe pero se dirige a la plataforma Linux

Ejecutable individual (Mac)

  • py2app : de nuevo, funciona como py2exe pero está orientado a Mac OS

Hmmm ... Supongo que lo más parecido a una enumeración sería un diccionario, definido como este:

months = {
    'January': 1,
    'February': 2,
    ...
}

o

months = dict(
    January=1,
    February=2,
    ...
)

Luego, puedes usar el nombre simbólico para las constantes como esta:

mymonth = months['January']

Existen otras opciones, como una lista de tuplas o una tupla de tuplas, pero el diccionario es el único que le proporciona una forma "simbólica" (cadena constante) para acceder al valor.

Edit: Me gusta la respuesta de Alexandru también!





python user-interface deployment tkinter release-management