Как создать прямо исполняемый кросс-платформенный графический интерфейс с помощью Python?

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

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

Ответ 1

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

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

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

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

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

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

  • PyInstaller - самый активный
  • fbs - если вы выбрали Qt выше

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

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

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

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

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

  • py2app - снова работает как py2exe, но нацелен на Mac OS

Ответ 2

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

http://www.pyinstaller.org/

Pyinstaller основан на установщике Python Gordon McMillan. Который больше не доступен.

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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

Ответ 7

Для самого GUI:

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

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

Плюс, если вы идете на вариант Tkinter, предложенный lubos hasko вы можете попробовать переносить приложение для работы в среде Windows без Python.

Ответ 8

# 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 на его компьютере (я говорю о Windows... для Apple os нет необходимости из исполняемого файла, я думаю, поскольку он поставляется с 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

**

Ответ 9

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

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

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

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

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

Ответ 10

Вы можете использовать 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 из командной строки.

Ответ 11

PySimpleGUI обертывает tkinter и работает на Python 3 и 2.7. Вы можете создавать пользовательские графические интерфейсы, которые используют все те же виджеты, которые вы найдете в 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()

Image created from posted PySimpleGUI code

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

pyinstaller -wF MyGUIProgram.py