Py2app와 Tkinter로 네이티브 같은 GUI 앱 만들기
소개
파이썬에서 GUI 앱을 만든 적이 없었다고 생각했기 때문에 시도해 보았습니다.
또, GUI의 스크립트만 쓰는 것도 재미없기 때문에, 그 스크립트를 Mac의 네이티브 앱 형식으로 출력, 실행할 수 있도록 해 보았습니다.
사용하는 것
파이썬에 표준으로 탑재된 GUI 라이브러리. (바르게 말하면 Tcl/Tk에 대한 인터페이스)
만든 Python 프로그램을 Mac의 어플리케이션 실행 형식(app)으로 변환하는 툴.
코드
tkinter의 공식 문서에 기재된 코드를 거의 그대로 가져왔다.
변경한 부분은 say_hi
메소드가 print
문장으로 메세지 출력하는 것이었으므로, 거기를 메세지 박스를 내도록 해 보았습니다.
도중, Tkinter의 모듈을 모두 임포트하고 있음에도 불구하고, tkMessageBox 클래스를 찾을 수 없다고 말해 조금만 고전. (tkMessageBox 클래스가 최상위 클래스라고 생각하지 않았습니다...)
tk.pyfrom Tkinter import *
import tkMessageBox
class Application(Frame):
def say_hi(self):
tkMessageBox.showinfo('info', 'hi there, everyone!')
def createWidgets(self):
self.QUIT = Button(self)
self.QUIT["text"] = "QUIT"
self.QUIT["fg"] = "red"
self.QUIT["command"] = self.quit
self.QUIT.pack({"side": "left"})
self.hi_there = Button(self)
self.hi_there["text"] = "Hello",
self.hi_there["command"] = self.say_hi
self.hi_there.pack({"side": "left"})
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.createWidgets()
root = Tk()
app = Application(master=root)
app.mainloop()
root.destroy()
실행하면 이런 느낌.
Hello를 클릭해 봅니다.
네, 안전 메시지 상자가 나왔습니다.
결과적으로는 조금 멋집니다만, 이대로 진행합니다.
Py2app로 짹짹
우선 Py2app를 pip로 넣어 봅시다.
$ pip install py2app
튜토리얼을 따라가면 우선 setup.py가 필요한 것 같습니다. py2applet
라는 편리한 커멘드가 있는 것처럼, 그것을 이용해 setup.py 를 작성합니다.
$ py2applet --make-setup tk.py
그리고 setup.py를 실행하여 앱을 만듭니다.
$ python setup.py py2app
2017/02/09 수정 -A파라미터를 붙이면 다른 환경으로부터 실행할 수 없기 때문에 상기 커멘드로부터 제거했습니다.
완성하면 아래와 같이 dist 디렉토리 이하에 파일이 배치됩니다.
그 파일을 더블 클릭하면 안전하게 실행되었습니다! 꽤 쉽습니다.
파이썬에서 GUI 앱을 작성하는 것이 대부분의 장애물이 낮다는 것을 알았기 때문에 여러 가지 시도하고 싶습니다.
참고
from Tkinter import *
import tkMessageBox
class Application(Frame):
def say_hi(self):
tkMessageBox.showinfo('info', 'hi there, everyone!')
def createWidgets(self):
self.QUIT = Button(self)
self.QUIT["text"] = "QUIT"
self.QUIT["fg"] = "red"
self.QUIT["command"] = self.quit
self.QUIT.pack({"side": "left"})
self.hi_there = Button(self)
self.hi_there["text"] = "Hello",
self.hi_there["command"] = self.say_hi
self.hi_there.pack({"side": "left"})
def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.createWidgets()
root = Tk()
app = Application(master=root)
app.mainloop()
root.destroy()
우선 Py2app를 pip로 넣어 봅시다.
$ pip install py2app
튜토리얼을 따라가면 우선 setup.py가 필요한 것 같습니다.
py2applet
라는 편리한 커멘드가 있는 것처럼, 그것을 이용해 setup.py 를 작성합니다.$ py2applet --make-setup tk.py
그리고 setup.py를 실행하여 앱을 만듭니다.
$ python setup.py py2app
2017/02/09 수정 -A파라미터를 붙이면 다른 환경으로부터 실행할 수 없기 때문에 상기 커멘드로부터 제거했습니다.
완성하면 아래와 같이 dist 디렉토리 이하에 파일이 배치됩니다.
그 파일을 더블 클릭하면 안전하게 실행되었습니다! 꽤 쉽습니다.
파이썬에서 GUI 앱을 작성하는 것이 대부분의 장애물이 낮다는 것을 알았기 때문에 여러 가지 시도하고 싶습니다.
참고
Reference
이 문제에 관하여(Py2app와 Tkinter로 네이티브 같은 GUI 앱 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/deko2369/items/3de11415a073e0555d7c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)