본문 바로가기

개발/Python & Flask

[Python] 윈도우 프로그램을 제작해보자 (pystray, tkinter)

서론

회사에서 업무를 하고 있는데,
일부 업무들은 확실히 자동화를 할 수 있을 것 같았다.

 

여러 거래 건들이 실패가 됐다는 알람메일이 자동으로 오는데,
양도 너무 많고 대부분이 제대로 읽을 필요도 없는 메일들이다.

 

일하고 있는 여러 직원들도 메일함을 보면 10000개씩 쌓여있다.

 

그래서 이런 것들도 자동화를 하기 위해 프로그램을 만들어보기로 했다.

파이썬으로 윈도우 프로그램을 만들 것이고, 이름은 Danal Assistant.

 

여러 모듈을 붙여서 만들 수 있도록 하겠지만,

 

1차적인 목표는

  1. 키워드 설정 아웃룩 메일 알람
  2. 한 두시간마다 스트레칭 알람

이다.

 

자 그럼 개발 시작!


I. pystray

파이썬으로 시스템 트레이에 아이콘을 띄워주는 라이브러리이다.

정보가 정말 없어서 찾기 힘들었지만,

원본 소스코드 깃허브 readme에 바로 사용가능 하도록 여러 코드가 올라와있는 것을 발견했다.

from pystray import MenuItem as item
import pystray
from PIL import Image

def action():
       pass

image = Image.open("image.jpg")
menu = (item('name', action), item('name', action))
icon = pystray.Icon("name", image, "title", menu)
icon.run()

 

1. 아이콘 이미지 만들기:

   이렇게 하면 py파일과 같은 경로에 있는 image.jpg 파일이

   PIL 라이브러리를 통해 아이콘처럼 작은 이미지로 만들어진다.

 

2. 메뉴 객체 만들기

   'menu' 라는 객체 괄호 안에 'MenuItem'을 만든다.

   이렇게 2개의 'MenuItem'을 만들면,

   윈도우 기준 아이콘을 우클릭하면 나타나는 메뉴,

   'menu' 객체에 'name' 이름을 가진 메뉴아이템 객체가 나타난다.

 

3. 아이콘 객체 최종완성

   icon 이 최종적인 시스템 트레이에 표시되는 아이콘이 된다.


II. tkinter

from tkinter import *
root = Tk()
root.mainloop()

정말 간단하다.

 

하지만 이 둘을 가용하려면 별도의 쓰레딩 작업이 필요하다.

  • pystray 는 icon.run()
  • tkinter는 mainloop()

을 하면 그 자리에서 코드가 순차실행중 그 자리에서 멈추기 때문에

메뉴에서 함수를 호출하거나 쓰레드 선언하고 실행하는 등

별도의 작업이 필요하다.

 

이 글로 시작을 알리고, 이후의 포스팅에서 각각 라이브러리에 대해 더 상세히 다뤄보겠다.

반응형