Як я можу створити безпосередньо-виконуваний міжплатформенний додаток GUI за допомогою Python?


263

Python працює на декількох платформах і може бути використаний для настільних та веб-додатків, тому я роблю висновок, що існує певний спосіб компілювати його у виконуваний файл для Mac, Windows та Linux.

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

Відповіді:


285

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

Багатоплатформні бібліотеки графічного інтерфейсу з прив’язками Python (Windows, Linux, Mac)

Звичайно, є багато, але найпопулярніші, які я бачив у дикій природі:

  • Tkinter - на основі інструментарію Tk GUI (фактично стандартна бібліотека 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

19
Поговоріть про pyinstaller для Windows, а не про py2exe.
— зміна журналу

8
Варто зазначити, що станом на 4,5 QT буде під LGPL.
— CTT

14
... ось чому вам слід дуже сильно розглянути можливість використання PySide, що є LGPL. Це також більше Pythonic, ніж API Python 2 PyQt4.
— Кріс Морган

4
Ви також можете додати cx_Freeze , який є платформою, підтримується та підтримує Python 3.x.
— fbmd

2
Чому тут не згадується Ківі ? Чи не правильний варіант цього питання?
— SilSur

56

Інша система (поки що не згадується у прийнятій відповіді) - це PyInstaller, який працював над моїм проектом PyQt, коли py2exe цього не зробив. Мені було легше користуватися.

http://www.pyinstaller.org/

Pyinstaller базується на установці Python Гордона Макміллана. Який більше не доступний.


1
І більше 3 років після написання цієї відповіді pyinstaller STILL не підтримує Python 3, а також не вказаний у дорожній карті майбутніх версій. Я маю на увазі, чи дійсно підтримка AIX та Solaris корисніша, ніж Python 3?
— Дейв

11
Він підтримує Python 2.7 та Python 3.3, 3.4 та 3.5 зараз.
— Кату

4
І 3,6 теж зараз.
— Рекскірус

14

Альтернативним інструментом py2exe є bbfreeze, який генерує виконувані файли для Windows та Linux. Це новіше, ніж py2exe, і добре обробляє яйця. Я виявив, що це магічно працює краще без конфігурації для найрізноманітніших програм.


11

Також є PyGTK , який в основному являє собою обгортку Python для інструментарію Gnome. Мені було легше розгорнути свою думку, ніж Ткінтеру, який раніше майже не знав програмування графічного інтерфейсу. Він працює досить добре і має кілька хороших навчальних посібників. На жаль, поки що не існує інсталятора для Python 2.6 для Windows, а може і не деякий час.


6

Оскільки python встановлений майже на будь-якій ОС, що не є Windows, за замовчуванням зараз, єдине, що вам потрібно переконатися, це те, що всі нестандартні бібліотеки, які ви використовуєте, встановлені.

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

MacOS X навіть включає підтримку в Xcode IDE для створення повноцінних програм GUI. Їх може виконувати будь-який користувач, що працює під управлінням OS X.


6

Для самого GUI:

PyQT - це майже посилання.

Ще один спосіб розробити швидкий інтерфейс користувача - написати веб-додаток, запустити його локально та відобразити додаток у браузері.

Крім того, якщо ви скористаєтеся варіантом Tkinter, запропонованим lubos hasko, ви можете спробувати портативний файл, щоб ваш додаток працював у середовищі Windows без Python.


4

Я не впевнений, що це найкращий спосіб зробити це, але коли я розгортаю додатки Ruby GUI (не Python, але має таку саму "проблему", що стосується .exe) у Windows, я просто пишу короткий запуск у C #, який закликає до мого основного сценарію. Він компілюється у виконуваний файл, і тоді я маю виконувану програму.


@Brian Ви бачили техніку _why для самостійного виконання додатків взуття? Можливо, це можна зробити за допомогою програм, які не взуття.
— Адам Лассек

У цих додатках ніхто з моїх користувачів не є анонімним. Я знаю, якщо у них є час виконання, і якщо цього немає, я можу встановити його для них. Основна проблема в цій темі полягає в тому, як запустити ці додатки без необхідності відкривати командний рядок і вводити виконуваний файл виконання, а потім ім'я програми.
— Брайан Варшо

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

Тоді вам слід використовувати py2exe, наприклад, щоб принести в одну папку всі файли, необхідні для запуску програми, навіть якщо користувач не пітон на своєму ПК (я говорю про 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 і виберіть тут запуску cmd)
4) запишіть у cmd:> python setup.py py2exe
5) у папку dist є всі необхідні файли.
6) може поштовувати і поширювати

Pyinstaller

Встановіть його з cmd

**

pip встановити pyinstaller

**

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

**

pyinstaller file.py

**


2

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


1

Не потрібно компілювати python для Mac / Windows / Linux. Це інтерпретована мова, тому вам просто потрібно встановити інтерпретатор Python у вибраній вами системі (вона доступна для всіх трьох платформ).

Що стосується бібліотеки графічного інтерфейсу, яка працює на платформі, то бібліотека віджетів Tt / Tcl Python працює дуже добре, і я вважаю, що це достатньо кросова платформа.

Ткінтер - це інтерфейс python для Tk / Tcl

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

Tkinter - не єдиний інструментарій GuiProgramming для Python. Однак це найпоширеніший і майже єдиний портативний між Unix, Mac та Windows


4
То як би ви зробили інсталяційний пакет для розгортання в системах людей, які просто хочуть встановити один крок (наприклад, двічі клацніть один пакет встановлення в Windows)?
— Крейг МакКуїн

Для цього є декілька підходів, про які я знаю: ви, ймовірно, напишіть інсталятор у пакетному скрипті або скомпільований для цільової системи, який би скинув потрібні файли кудись і встановив необхідні бібліотеки та час виконання.
— Джастін Стандарт

1
Встановлення Python як частини вашої власної установки було б трохи хитро, тому що вам доведеться мати справу з можливістю того, що неправильна версія Python вже встановлена. Вам доведеться встановлювати поруч, щоб ваш додаток мав доступ до нещодавно встановленої версії Python, але будь-які існуючі додатки продовжували використовувати стару версію Python. (тобто, не псуючи такі речі, як асоціація файлів .py або PATH)
— Джонатан Хартлі

Швидше за все, ваш інсталятор перевірить наявність правильної версії Python, і якщо він її знайшов, використовуйте це, інакше встановіть python як частину процесу встановлення.
— Джастін Стандарт

Правильно - але той другий варіант "інакше встановити пітон як частину процесу встановлення" - це саме те, про що я говорю. Це було б чудно, з тих причин, які я наводив.
— Джонатан Хартлі

0

Ви можете використовувати 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допомогою командного рядка.


0

!!! KIVY !!!

Я був вражений, побачивши, що Ківі ніхто не згадав !!!

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

Я слідкував за навчальною серією якщо це допомагає ...

Просто, щоб дати уявлення про те, як виглядає ківі, дивіться це (Проект, над яким я працюю):

Проект, над яким я працюю

І я працюю над цим ледь не тиждень! Вигоди для Kivy ви запитаєте? Перевірка це

Причиною, чому я вибрав це, є його зовнішній вигляд і те, що його можна використовувати і в мобільному.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.