Як я можу створити безпосередньо-виконуваний міжплатформенний додаток 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.