파이썬 GUI 만들기 (TKinter)

파이썬] TKinter GUI 포스트 ep.7 - 가상화페 시세확인 기능 개발 완료 [증감율 표시 기능 추가 (▲999%)]

gomming 2020. 10. 1. 02:21

 

#SUN#TRON#TRX#KLAY#threading#tkinter

 

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

아래 언급되지 않은 기능들의 설명은 ep.1~6편 글에서 확인하실 수 있습니다.

 

저번 포스트에서 TKinter 라벨 위젯으로 입력되는 시세를 실시간으로 업데이트 할 수 있도록 개선해 봤는데요.

 

이번에는 거래소로부터 시가 정보를 받아와서 증감율을 표시하도록 해봤어요.

 

아래 완성된 화면 이미지 입니다.

왼쪽 라인에 가상화폐 실시간 시세와 시가대비 증감율을 표시하였어요.

KLAY는 코인원, GDAC에만 상장되어 있는데 아직 시가 정보를 가져오질 못해서

향후 추가해보려고 합니다.

우측 라인에는 주식 시세를 확인할 수 있도록 할 예정이에요.

같은 원리이니 금방 만들 수 있을 거 같아요 !

 

그럼 추가된 코드 드립니다.

 

import pyupbit
    
    #################시가 받아오기###################
    #SUN_BTC시가
    SUN_BTC_OPEN = pyupbit.get_ohlcv("BTC-SUN", "day", count=10).iloc[-1][0]
    BTC_KRW_OPEN = pyupbit.get_ohlcv("KRW-BTC", "day", count=10).iloc[-1][0]
    #SUN_KRW시가
    SUN_KRW_OPEN = float(SUN_BTC_OPEN)*float(BTC_KRW_OPEN)
    #TRX_KRW 시가
    TRX_KRW_OPEN = float(pyupbit.get_ohlcv("KRW-TRX", "day", count=10).iloc[-1][0])
    ##################   증감률   ##################
    #print (SUN_KRW_OPEN, TRX_KRW_OPEN)
    #print (type(SUN_KRW_OPEN), type(TRX_KRW_OPEN))
    SUN_PER = (SUN-SUN_KRW_OPEN)/SUN_KRW_OPEN*100
    TRX_PER = (TRX-TRX_KRW_OPEN)/TRX_KRW_OPEN*100
    print (SUN_PER, TRX_PER)
    if SUN_PER > 0:
        colr_sun = 'red2'
        updown = '▲'
    else:
        colr_sun = 'blue'
        updown = '▼'
    if TRX_PER > 0:
        colr_trx = 'red2'
        updown1 = '▲'
    else:
        colr_trx = 'blue'
        updown1 = '▼'
    font1=tkinter.font.Font(family="Arial", size=20, weight="bold", slant="italic")
    LB_SUN_PER = tkinter.Label (tab1, text="%0.1f"%(SUN_PER)+"%s"%updown, font=font1,bg='grey19', fg = '%s'%colr_sun)
    LB_SUN_PER.place(x=180,y=110)
    LB_TRX_PER = tkinter.Label (tab1, text="%0.1f"%(TRX_PER)+"%s"%updown1, font=font1, bg='grey19', fg = '%s'%colr_trx)
    LB_TRX_PER.place(x=180,y=260)
    
    def upd():
        SUN_BTC_OPEN = pyupbit.get_ohlcv("BTC-SUN", "day", count=10).iloc[-1][0]
        BTC_KRW_OPEN = pyupbit.get_ohlcv("KRW-BTC", "day", count=10).iloc[-1][0]

        SUN_KRW_OPEN = float(SUN_BTC_OPEN)*float(BTC_KRW_OPEN)
        TRX_KRW_OPEN = float(pyupbit.get_ohlcv("KRW-TRX", "day", count=10).iloc[-1][0])

        SUN_PER = (SUN-SUN_KRW_OPEN)/SUN_KRW_OPEN*100
        TRX_PER = (TRX-TRX_KRW_OPEN)/TRX_KRW_OPEN*100
        if SUN_PER > 0:
            colr_sun = 'red2'
            updown = '▲'
        else:
            colr_sun = 'blue'
            updown = '▼'
        if TRX_PER > 0:
            colr_trx = 'red2'
            updown1 = '▲'
        else:
            colr_trx = 'blue'
            updown1 = '▼'
        font1=tkinter.font.Font(family="Arial", size=20, weight="bold", slant="italic")
        LB_SUN_PER.config(text="%s "%updown+"%0.1f"%(SUN_PER)+'%')
        LB_TRX_PER.config(text="%s "%updown1+"%0.1f"%(TRX_PER)+'%')

        
        threading.Timer(10, upd).start()
    upd()

우선 pyupbit라는 라이브러리를 설치하여 거래소로부터 시가 정보를 가져올 수 있는데요.

 

pip install pyupbit 명령어로 설치할 수 있습니다.

 

pyupbit.get_ohlcv("BTC-SUN", "day", count=10).iloc[-1][0]

해당 코드로 SUN의 BTC 시세정보 중 시가 정보만 가져올 수 있어요.

데이터 타입은 pandas Dataframe으로 생성 됩니다.

 

업비트에는 현재 SUN이 BTC마켓에만 상장되어 있기 때문에

BTC의 KRW 시가와 곱하여 SUN의 KRW 시가를 계산하였습니다.

 

증감률은

SUN_PER = (SUN-SUN_KRW_OPEN)/SUN_KRW_OPEN*100

이렇게 계산하였고,

지난 시간에 이용했던 threading 기본기능을 이용해서

업데이트된 값을 특정 시간마다 반영하도록 하였습니다.

 

아래 실행 중 동영상을 첨부하였습니다.

 

 

전체 코드 파일 첨부합니다.

gom_gui.py
0.01MB