Создайте напрямую исполняемое кроссплатформенное приложение с графическим интерфейсом пользователя с помощью Python

Python работает на нескольких платформах и может использоваться для настольных и веб-приложений, поэтому я прихожу к выводу, что есть способ скомпилировать его в исполняемый файл для Mac, Windows и Linux.

Проблема в том, что я понятия не имею, с чего начать или как написать с ним графический интерфейс, может ли кто-нибудь пролить свет на это и указать мне правильное направление, пожалуйста?

Ответов (13)

Решение

Сначала вам понадобится некоторая библиотека графического интерфейса с привязками Python, а затем (если хотите) некоторая программа, которая преобразует ваши сценарии Python в автономные исполняемые файлы.

Кросс-платформенные библиотеки графического интерфейса с привязками Python (Windows, Linux, Mac)

Конечно, их много, но самые популярные, которые я видел в дикой природе, это:

  • Tkinter - основан на Tk GUI toolkit (де-факто стандартная библиотека GUI для python, бесплатная для коммерческих проектов)
  • WxPython - на основе WxWidgets (популярно, бесплатно для коммерческих проектов)
  • Qt с использованием привязок PyQt или Qt для Python . Первое не является бесплатным для коммерческих проектов. Последний менее зрелый, но его можно использовать бесплатно.

Полный список находится на http://wiki.python.org/moin/GuiProgramming

Один исполняемый файл (все платформы)

  • PyInstaller - самый активный (также может использоваться с PyQt)
  • fbs - если вы выбрали Qt выше

Один исполняемый файл (Windows)

  • py2exe - раньше был самым популярным

Один исполняемый файл (Linux)

  • Freeze - работает так же, как py2exe, но нацелен на платформу Linux.

Один исполняемый файл (Mac)

  • py2app - опять же, работает как py2exe, но нацелен на Mac OS

Я не уверен, что это лучший способ сделать это, но когда я развертываю приложения Ruby GUI (не Python, но с той же «проблемой», что и .exe) в Windows, я просто пишу короткая пусковая установка на C#, которая вызывает мой основной скрипт. Он компилируется в исполняемый файл, а затем у меня есть исполняемый файл приложения.

# 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

Затем вы должны использовать py2exe, например, чтобы поместить в одну папку все файлы, необходимые для запуска приложения, даже если у пользователя нет python на своем компьютере (я говорю об окнах ... для яблочной ОС нет необходимости исполняемого файла, я думаю, поскольку он поставляется с питоном без необходимости его установки.

Создать этот файл

1) Создайте setup.py

с этим кодом:

from distutils.core import setup
import py2exe

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

сохраните это в папке

2) Поместите свою программу в ту же папку с setup.py, поместите в эту папку программу, которую вы хотите сделать распространяемой: es: l4h.py

ps: измените имя файла (с l4h на любое другое, это пример)

3) Запустите cmd из этой папки (в папке щелкните правой кнопкой мыши + shift и выберите здесь start cmd)
4) напишите в cmd:> python setup.py py2exe
5) в папке dist есть все файлы, которые вам нужны
6) вы можно заархивировать и распространить

Pyinstaller

Установите его из cmd

**

pip install pyinstaller

**

Запускаем его из cmd из папки, где находится файл

**

pyinstaller file.py

**

Вы можете использовать его appJar для базовой разработки графического интерфейса.

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 при запуске

См. Документацию на сайте appJar .

Установка производится pip install appjar из командной строки.

!!! КИВЫ !!!

Я был поражен, увидев, что никто не упомянул Киви !!!

Я когда-то делал проект с использованием Tkinter, хотя они и утверждают, что он значительно улучшился, он все еще дает мне ощущение Windows 98, поэтому я переключился на Kivy .

Я слежу за серией руководств, если это помогает ...

Чтобы дать представление о том, как выглядит kivy, посмотрите это (проект, над которым я работаю):

Проект, над которым я работаю

И вот уже неделю работаю над этим! Вы спросите, какие преимущества для Киви? Проверить это

Причина, по которой я выбрал это, - его внешний вид и то, что его также можно использовать на мобильных устройствах.

PySimpleGUI является оболочкой для tkinter и работает на Python 3 и 2.7. Он также работает на Qt, WxPython и в веб-браузере, используя один и тот же исходный код для всех платформ.

Вы можете создавать собственные графические интерфейсы, которые используют все те же виджеты, которые вы найдете в tkinter (ползунки, флажки, переключатели, ...). Код имеет тенденцию быть очень компактным и читаемым.

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

Изображение создано из опубликованного кода PySimpleGUI

Как объясняется в документации PySimpleGUI , для создания исполняемого файла .EXE :

pyinstaller -wF MyGUIProgram.py

Вы можете сделать три вещи:

Во-первых, нужно найти GUI Designer, который может запускать свой код как автономные приложения, такие как файлы .exe. Я использую версию MatDeck (для людей, использующих конструкторы графического интерфейса, я рекомендую MD Python Designer ), поскольку я считаю (я использую другую версию, поэтому я не слишком уверен.) Она позволяет мне преобразовывать код в автономные приложения и иметь его. Таким образом, нет необходимости устанавливать программное обеспечение на каждый компьютер, на котором будет запущена программа.

Второй вариант - частично обойти проблему, запустить графический интерфейс как веб-страницу. Это даст вам максимальную совместимость, поскольку большинство, если не все ОС, могут его использовать. Еще раз, вам понадобится GUI Designer, который может конвертировать свои компоненты в веб-совместимый формат, я сделал это однажды и использовал ту же версию MatDeck ( Visionary Deck ), на этот раз я бы не рекомендовал MD Python Designer, так как я не знаю, может ли он превратить свои графические интерфейсы в веб-сайты с помощью веб-сборки, тогда как Visionary Deck я пробовал и тестировал. Как и во всем, что, скорее всего, есть и другое программное обеспечение, я часто использую его, потому что я много работаю с математикой и физикой.

Третий вариант также позволяет обойти проблему, но сделайте это в Tkinter и просто убедитесь, что у вас есть Python IDE или просто старый Python, и запустите код, это запустит графический интерфейс. Это хорошее решение и, возможно, самое простое, но я бы не стал считать его самым коротким или лучшим. Если вы планируете переключаться между несколькими операционными системами и компьютерами, это, вероятно, будет вашим лучшим выбором.

Вам не нужно компилировать python для Mac / Windows / Linux. Это интерпретируемый язык, поэтому вам просто нужно установить интерпретатор Python в выбранной вами системе (он доступен для всех трех платформ).

Что касается библиотеки графического интерфейса, которая работает кросс-платформенно, библиотека виджетов Python Tk / Tcl работает очень хорошо, и я считаю, что она достаточно кроссплатформенная.

Tkinter - это интерфейс Python для Tk / Tcl

На веб-странице проекта Python:

Tkinter - не единственный инструментарий GuiProgramming для Python. Однако он является наиболее часто используемым и почти единственным, который переносится между Unix, Mac и Windows.

Поскольку python теперь установлен почти во всех ОС, отличных от Windows, по умолчанию, единственное, в чем вам действительно нужно убедиться, - это то, что установлены все нестандартные библиотеки, которые вы используете.

Сказав это, можно создавать исполняемые файлы, которые включают интерпретатор python и любые используемые вами библиотеки. Однако это может привести к созданию большого исполняемого файла.

MacOS X даже включает поддержку в Xcode IDE для создания полностью автономных приложений с графическим интерфейсом. Их может запустить любой пользователь OS X.

Альтернативный инструмент py2exe - bbfreeze, который генерирует исполняемые файлы для Windows и Linux. Он новее py2exe и неплохо обрабатывает яйца. Я обнаружил, что он волшебным образом работает лучше без настройки для самых разных приложений.

Для самого графического интерфейса:

PyQT - это в значительной степени ссылка.

Другой способ разработать быстрый пользовательский интерфейс - написать веб-приложение, запустить его локально и отобразить приложение в браузере.

Кроме того, если вы выберете вариант Tkinter, предложенный lubos hasko, вы можете попробовать Portablepy, чтобы ваше приложение запускалось в среде Windows без Python.

Другая система (еще не упомянутая в принятом ответе) - это PyInstaller, которая работала для моего проекта PyQt, когда py2exe не работал. Мне показалось, что это проще в использовании.

http://www.pyinstaller.org/

Pyinstaller основан на установщике Python Гордона Макмиллана. Которая больше не доступна.

Также существует PyGTK , который, по сути, представляет собой оболочку Python для Gnome Toolkit. Мне было легче осмыслить, чем Tkinter, поскольку раньше я практически ничего не знал о программировании с графическим интерфейсом. Он работает очень хорошо и имеет несколько хороших руководств. К сожалению, установщика Python 2.6 для Windows еще нет, и, возможно, его не будет в ближайшее время.