Создайте напрямую исполняемое кроссплатформенное приложение с графическим интерфейсом пользователя с помощью Python
Python работает на нескольких платформах и может использоваться для настольных и веб-приложений, поэтому я прихожу к выводу, что есть способ скомпилировать его в исполняемый файл для Mac, Windows и Linux.
Проблема в том, что я понятия не имею, с чего начать или как написать с ним графический интерфейс, может ли кто-нибудь пролить свет на это и указать мне правильное направление, пожалуйста?
Ответов (13)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()
См. Документацию на сайте 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 , для создания исполняемого файла .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.
Также существует PyGTK , который, по сути, представляет собой оболочку Python для Gnome Toolkit. Мне было легче осмыслить, чем Tkinter, поскольку раньше я практически ничего не знал о программировании с графическим интерфейсом. Он работает очень хорошо и имеет несколько хороших руководств. К сожалению, установщика Python 2.6 для Windows еще нет, и, возможно, его не будет в ближайшее время.