파이썬 팁

파이썬] Tkinter GUI 만들기 ep.5 - 가상화폐 시세 확인 프로그램, TRON, SUN, KLAY

gomming 2020. 9. 30. 01:39

 

저번 시간에 계획했던 코인 시세 확인 기능을 추가해 봤어요.

본문 끝에 전체 코드를 올려 놓았으니 필요하시면 참고하세요 ^^

아래 언급되지 않은 기능들은 이전 1~4편 글에서 확인하시면 됩니다.

 

이번글을 잘 활용하시면 원하는 거래소의 코인 시세를 자유롭게 가져와 확인하실 수 있을 거 같네요 ^^

 

우선 진행 중인 화면 입니다. 아직 더 만들어야 되서 ..

50프로 정도 진행 됬어요

tab1번에 이렇게 좌측은 코인시세 우측은 주식시세로 채우려 계획하고 있어요.

 

코인 종류는 메뉴를 만들어서 바꿀 수 있도록 하려고 하고..

현재 가격이 나오고 있는데 그 외에도 전일 종가 대비 증감율, 그에 따른 색상 표시를 추가하여고 해요. 빠른 시일 내에 만들 수 있을 거 같은데요.

 

오늘까지 만들어진 코드로 Tkinter 기능을 소개해 드리려고 합니다.

 

우선 코인 이미지와 배경 이미지, 가로, 세로 선은 그림판으로 만들어서 이용했어요. 굉장히 원초적이지만 빠르고 확실하답니다 ㅋㅋ

 

1) 이미지 추가를 위한 코드입니다.

###################분할 선#############################
WDIR = "C:/gom"
bg_img = "grey19.png" #배경색상
bg_path = os.path.join(WDIR, bg_img)

img1 = PhotoImage(file=bg_path)
img_bg = tk.Label(tab1, image=img1)
img_bg.place(x=0, y=0)

ver_img = "vert.png" # 가로선
ver_path = os.path.join(WDIR, ver_img)
img2 = PhotoImage(file=ver_path)
img_ver = tk.Label(tab1, image=img2)
img_ver.place(x=0, y=150)
img_ver2 = tk.Label(tab1, image=img2)
img_ver2.place(x=0, y=300)

long_img = "long.png" #세로선
long_path = os.path.join(WDIR, long_img)
img3 = PhotoImage(file=long_path)
img_long = tk.Label(tab1, image=img3)
img_long.place(x=400, y=0)

###################코인로고#############################

sun_img = "sun.png"
sun_path = os.path.join(WDIR, sun_img)

img4 = PhotoImage(file=sun_path)
sun_bg = tk.Label(tab1, image=img4, bd=0)
sun_bg.place(x=20, y=50)

tron_img = "tron.png"
tron_path = os.path.join(WDIR, tron_img)

img5 = PhotoImage(file=tron_path)
tron_bg = tk.Label(tab1, image=img5, bd=0)
tron_bg.place(x=10, y=190)

klay_img = "4256.png"
klay_path = os.path.join(WDIR, klay_img)

img6 = PhotoImage(file=klay_path)
klay_bg = tk.Label(tab1, image=img6, bd=0)
klay_bg.place(x=23, y=355)

#################################################

 

#트론로고 #클레이로고 #SUN로고 #이미지추가 #탭배경색 #가로선 #세로선

 

다음으로

2) 코인 시세를 가져오는 코드입니다.

 

from exchange import CurrencyPair
from exchange import ExchangeAPI

Binance = ExchangeAPI().create_exchange('Binance')
Upbit = ExchangeAPI().create_exchange('Upbit')
Coinone = ExchangeAPI().create_exchange('Coinone')

tick1 = Binance.get_ticker(CurrencyPair('USDT', 'SUN'))
SUN=float(str(tick1).split()[6].split(',')[0])*1170
tick2 = Upbit.get_ticker(CurrencyPair('KRW', 'TRX'))
TRX=float(str(tick2).split()[6].split(',')[0])
tick3 = Coinone.get_ticker(CurrencyPair('KRW', 'KLAY'))
KLAY=float(str(tick3).split()[6].split(',')[0])
print(tick3)

font=tkinter.font.Font(family="Arial", size=30, slant="italic", weight='bold')

################코인라벨########################
lb_SUN = tkinter.Label(tab1, text='SUN: %0.1f'%(SUN), bg='gray19', fg='snow',font=font)
lb_SUN.place(x=110,y=60)
lb_TRX = tkinter.Label(tab1, text='TRON: %0.1f'%(TRX),  bg='gray19', fg='snow',font=font)
lb_TRX.place(x=110,y=210)
lb_KLAY = tkinter.Label(tab1, text='KLAY: %0.1f'%(KLAY),  bg='gray19', fg='snow',font=font)
lb_KLAY.place(x=110,y=360)

WDIR = "C:/gom"
img_name = "home.png"
img_name_s = "home_scale.png"

image_path = os.path.join(WDIR, img_name)
image_s_path = os.path.join(WDIR, img_name_s)

img = PhotoImage(file=image_s_path)
img_big = PhotoImage(file=image_path)
img_lb = tk.Label(tab2, image=img)
img_lb.bind("<Button-1>", new_win)
img_lb.bind("<Enter>", scaled)
img_lb.bind("<Leave>", Re)
img_lb.place(x=360, y=300)

API는 제가 구현한게 아니고 아래 깃허브 주소의 코드를 참조했습니다.

opening price 불러오기가 없어서 나중에 다른 API를 찾아서 교체하거나 기능 추가해서 써야 할거같네요 ㅠ

https://github.com/inasie/pyexchange

다양한 거래소의 시세를 간편하게 불러올 수 있습니다.

 

3) 업데이트 기능 입니다

업데이트는 실시간으로 변동되도록 해야하는데 지금 만들고 있어서 다음 글에서 소개 드릴거 같고요. 지금은 단축키로 업데이트 되도록 해놨어요.

def Re(event):
    window.destroy()
    os.system('python C:\\gom\\gom_gui.py')


window.bind('<Alt-q>', Re)
window.config(menu=menubar)
window.geometry('800x500+300+100')
window.mainloop()

 

Alt키 + Q 버튼을 누르면 재시작 되면서 업데이트 됩니다.

 

 

끝으로 전체 코드 드립니다.

의견 있으시면 댓글 마니마니 남겨주세요 ~ ,~

 

gom_gui.py
0.01MB