파이썬을 사용하여 직접 실행 가능한 크로스 플랫폼 GUI 앱을 어떻게 만들 수 있습니까?


263

파이썬은 여러 플랫폼에서 작동하며 데스크톱 및 웹 응용 프로그램에 사용할 수 있으므로 Mac, Windows 및 Linux 용 실행 파일로 컴파일 할 수있는 방법이 있다고 결론지었습니다.

문제는 어디서 GUI를 시작 해야하는지 또는 어떻게 작성 해야할지 모르겠습니다. 누구든지 이것에 대해 밝힐 수 있고 올바른 방향으로 나를 가리킬 수 있습니까?

답변:


285

먼저 파이썬 바인딩을 사용하는 GUI 라이브러리가 필요하고 파이썬 스크립트를 독립 실행 파일로 변환하는 프로그램이 필요합니다.

Python 바인딩을 사용하는 크로스 플랫폼 GUI 라이브러리 (Windows, Linux, Mac)

물론 많은 것들이 있지만 내가 야생에서 본 가장 인기있는 것은 다음과 같습니다.

  • Tkinter - Tk GUI 툴킷 기반 (파이썬 용 사실상의 표준 GUI 라이브러리, 상용 프로젝트 용 무료)
  • WxPython - WxWidgets 기반 (상업용 프로젝트의 경우 무료)
  • PyQt 바인딩을 사용하는 Qt 또는 Python을위한 Qt . 전자는 상업 프로젝트에 대해 무료가 아닙니다. 후자는 덜 성숙하지만 무료로 사용할 수 있습니다.

전체 목록은 http://wiki.python.org/moin/GuiProgramming 에 있습니다 .

단일 실행 파일 (모든 플랫폼)

  • PyInstaller- 가장 활동적 (와 함께 사용 가능 PyQt)
  • fbs- 위의 Qt를 선택한 경우

단일 실행 파일 (Windows)

단일 실행 파일 (Linux)

  • 고정 -py2exe와 동일한 방식으로 작동하지만 Linux 플랫폼을 대상으로 함

단일 실행 파일 (Mac)

  • py2app- 다시, py2exe처럼 작동하지만 Mac OS를 대상으로 함

19
py2exe 대신 Windows 용 pyinstaller에 대해 이야기하십시오.
changelog

8
4.5 QT 기준으로 LGPL이 적용된다는 점은 주목할 가치가 있습니다.
CTT 2019

14
... 당신은 지금 아주 많이 사용하는 것이 좋습니다 이유입니다 PySide 이다 LGPL을. 또한 PyQt4의 Python 2 API보다 Pythonic입니다.
Chris Morgan

4
크로스 플랫폼이고 유지 관리되며 Python 3.x를 지원하는 cx_Freeze 를 추가 할 수도 있습니다 .
fbmd

2
여기 에 Kivy에 대한 언급이없는 이유는 무엇 입니까? 이 질문에 유효한 옵션이 아닙니까?
SilSur

56

또 다른 시스템 (아직 허용 된 답변에 언급되지 않음)은 PyInstaller이며 py2exe는 그렇지 않을 때 PyQt 프로젝트에서 작동했습니다. 사용하기가 더 쉽다는 것을 알았습니다.

http://www.pyinstaller.org/

Pyinstaller는 Gordon McMillan의 Python Installer를 기반으로합니다. 더 이상 사용할 수 없습니다.


1
이 답변이 작성된 후 3 년 이상이 지나면 pyinstaller STILL은 Python 3을 지원하지 않으며 향후 릴리스의 로드맵에 나열되지 않습니다. 내 말은, AIX와 Solaris 지원이 Python 3보다 실제로 더 유용한가?
Dave

11
현재 Python 2.7 및 Python 3.3, 3.4 및 3.5를 지원합니다.
Katu

4
그리고 3.6도 지금.
Rexcirus

14

py2exe의 대체 도구는 Windows 및 Linux 용 실행 파일을 생성 하는 bbfreeze 입니다. py2exe보다 최신이며 계란을 잘 처리합니다. 다양한 응용 프로그램을 구성하지 않고도 마술처럼 더 잘 작동한다는 것을 알았습니다.


11

기본적으로 Gnome Toolkit의 Python 래퍼 인 PyGTK 도 있습니다 . 이전에 GUI 프로그래밍에 대한 지식이 거의 없기 때문에 Tkinter보다 내 마음을 감싸는 것이 더 쉽다는 것을 알았습니다. 꽤 잘 작동하며 좋은 자습서가 있습니다. 불행히도 Windows 용 Python 2.6 용 설치 프로그램이 아직 없으며 한동안은 아닐 수도 있습니다.


6

파이썬은 현재 기본적으로 거의 모든 비 Windows OS에 설치되어 있으므로 실제로 확인해야 할 유일한 것은 사용하는 모든 비표준 라이브러리가 설치되어 있다는 것입니다.

python 인터프리터 및 사용하는 라이브러리가 포함 된 실행 파일을 빌드 할 수 있습니다. 그러나 이로 인해 큰 실행 파일이 생성 될 수 있습니다.

MacOS X에는 완전한 독립형 GUI 응용 프로그램을 만들기 위해 Xcode IDE에 대한 지원도 포함되어 있습니다. OS X를 실행하는 모든 사용자가이를 실행할 수 있습니다.


6

GUI 자체의 경우 :

PyQT 는 거의 참조입니다.

빠른 사용자 인터페이스를 개발하는 또 다른 방법은 웹 앱을 작성하고 로컬로 실행하여 브라우저에 앱을 표시하는 것입니다.

또한 lubos hasko에서 제안한 Tkinter 옵션을 사용하는 경우 Python없이 Windows 환경에서 앱을 실행하도록 portablepy를 시도 할 수 있습니다.


4

이것이 최선의 방법인지 확신 할 수는 없지만 Windows에 Ruby GUI 응용 프로그램을 배포 할 때 (파이썬이 아니지만 .exe와 관련하여 동일한 "문제"가 있음) 내 주요 스크립트를 호출하는 C #의 짧은 실행기. 실행 파일로 컴파일 한 다음 응용 프로그램 실행 파일이 있습니다.


@ 브라이언 _ 자기 실행 신발 앱에 대한 _why의 기술 을 보셨습니까 ? 슈즈 이외의 프로그램으로 가능할 수 있습니다.
Adam Lassek

이 앱의 경우 익명의 사용자가 없습니다. 나는 그들이 런타임을 가지고 있는지 알고 있고, 그렇지 않으면 설치할 수 있습니다. 이 주제의 주요 관심사는 명령 프롬프트를 열고 런타임 실행 파일과 프로그램 이름을 입력하지 않고 이러한 응용 프로그램을 시작하는 방법입니다.
Brian Warshaw

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를 사용하여 사용자가 자신의 PC에서 파이썬을 사용하지 않은 경우에도 앱을 실행하는 데 필요한 모든 파일을 하나의 폴더에 가져와야합니다 (Windows에 대해 이야기하고 있습니다 ... 애플 OS의 경우 필요가 없습니다) python과 함께 설치 파일을 설치할 필요가 없으므로 실행 파일을 생각합니다.

이 파일을 작성하십시오

1) setup.py를 만듭니다

이 코드로 :

from distutils.core import setup
import py2exe

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

폴더에 저장

2) 프로그램을 setup.py와 같은 폴더에 넣습니다.이 폴더에 배포 할 프로그램을 넣으십시오. es : l4h.py

추신 : 파일 이름을 변경하십시오 (l4h에서 원하는 것으로 바꾸십시오).

3) 실행 폴더에 마우스 오른쪽 버튼으로 클릭 + 이동과 여기에 cmd를 시작 선택) (해당 폴더에서 cmd를
cmd를 4) 쓰기 :> 파이썬 setup.py py2exe에
5) DIST 모든 당신이 필요로하는 파일이있는 폴더
6)을 그것을 압축하고 배포 할 수 있습니다

파이 설치자

cmd에서 설치

**

pip install pyinstaller

**

파일이있는 폴더의 cmd에서 실행하십시오.

**

pyinstaller 파일 .py

**


2

PySimpleGUI는 tkinter를 감싸고 Python 3 및 2.7에서 작동합니다. 또한 모든 플랫폼에 대해 동일한 소스 코드를 사용하여 Qt, WxPython 및 웹 브라우저에서 실행됩니다.

tkinter에서 찾은 동일한 위젯 (슬라이더, 체크 박스, 라디오 버튼 등)을 모두 사용하는 사용자 정의 GUI를 만들 수 있습니다. 코드는 매우 간결하고 읽기 쉬운 경향이 있습니다.

#!/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 Documentation에 설명 된대로 실행 하는 .EXE 파일빌드하십시오 .

pyinstaller -wF MyGUIProgram.py


1

컴파일 할 필요가 없습니다Mac / Windows / Linux 용 Python . 이 언어는 통역 된 언어이므로 원하는 시스템에 Python 통역사를 설치하면됩니다 (세 가지 플랫폼 모두에서 사용 가능).

크로스 플랫폼에서 작동하는 GUI 라이브러리의 경우 Python의 Tk / Tcl 위젯 라이브러리가 매우 잘 작동하며 충분히 크로스 플랫폼이라고 생각합니다.

inter 터 는 Tk / Tcl에 대한 파이썬 인터페이스입니다

파이썬 프로젝트 웹 페이지에서 :

Tkinter는 Python을위한 유일한 GuiProgramming 툴킷이 아닙니다. 그러나 가장 일반적으로 사용되는 것으로 Unix, Mac 및 Windows간에 이식 가능한 거의 유일한 것입니다.


4
그렇다면 1 단계 설치 만 원하는 사람들의 시스템에 설치 패키지를 어떻게 배치 할 수 있습니까 (예 : Windows에서 단일 설치 패키지를 두 번 클릭)?
Craig McQueen

이를 위해 내가 아는 몇 가지 접근 방식이 있습니다. 배치 스크립트로 설치 프로그램을 작성하거나 대상 시스템에 맞게 컴파일하여 필요한 파일을 삭제하고 필요한 라이브러리 및 런타임을 프로세스에 설치할 수 있습니다.
저스틴 표준

1
파이썬을 자신의 설치의 일부로 설치하는 것은 잘못된 버전의 Python이 이미 설치되어있을 가능성을 다루어야하기 때문에 약간 어리 석습니다. 응용 프로그램이 새로 설치된 Python 버전에 액세스 할 수 있도록 나란히 설치해야하지만 기존 응용 프로그램은 계속해서 이전 버전의 Python을 사용했습니다. (즉, 평 파일 연결 또는 PATH와 같은 일을 망치는 제외)
조나단 하틀리

설치 프로그램이 올바른 버전의 Python이 있는지 확인하고 발견 된 경우이를 사용하고 그렇지 않으면 설치 프로세스의 일부로 python을 설치하십시오.
Justin Standard

맞습니다. 그러나 두 번째 옵션 인 '그렇지 않으면 설치 프로세스의 일부로 파이썬을 설치하십시오'는 바로 내가 말하는 것입니다. 내가 준 이유 때문에 그것은 어리석은 일입니다.
Jonathan Hartley

0

appJar기본 GUI 개발에 사용할 수 있습니다 .

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의 장점은 무엇입니까? 이것을 확인 하십시오

내가 이것을 선택한 이유는 외관과 모바일에서도 사용할 수 있기 때문입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.