반응형

@ 30_가상화폐 금액표시 GUI 프로그램 만들기

 

- tkinter 사용 (tk-interface)

 

1. tkinter 사용해서 윈도우 창 생성, hello 쓰기

2. 글자 크기 바꾸기

3. 1초 마다 비트코인값 불러오기


1. tkinter 로 윈도우 생성, hello 쓰기

import tkinter

window = tkinter.Tk()   # 윈도우 객체 생성
window.title('가상화폐 금액표시')   # 윈도우 제목
window.geometry('400x200')  # 윈도우 크기
window.resizable(False, False)  # 크기변경 불가

label=tkinter.Label(window, text='hello')   # 문자열 출력
label.pack()    

window.mainloop()   #GUI 계속 실행시키기 위해 루프돌림

결과.


2. 글자 크기 바꾸기

import tkinter
import tkinter.font #tkinter 를 임포트 하고 tkinter.font를 또 다시 임포트 하는 이유는?

window = tkinter.Tk()
window.title('가상화폐 금액표시')
window.geometry('400x200')
window.resizable(False, False)

font = tkinter.font.Font(size=30)
# label은 윈도우 안에서 텍스트를 표시하게 한다.
label = tkinter.Label(window, font=font, text='hello')
# 위치를 잡기 위해 pack() 사용, 디폴트는 top
label.pack()    

window.mainloop()

[Q] tkinter와 tkinter.font 두 개를 임포트 해야하나?

[Q] tkinter.Label 에 fontsize 옵션은 없나?

 

결과.

 


3. 1초 마다 비트코인값 불러오기

 - 교재에서는 1초마다 재귀함수를 호출했는데, 재귀함수는 찝찝해서 그 다음 예제에 나오는 쓰레드를 살짝 바꿨다.

 - 쓰레드 : 비트코인 값 읽어서 label 의 텍스트로 넣어주기 후 1초 대기 반복

import tkinter
import tkinter.font
import time
import threading
import pyupbit

window = tkinter.Tk()
window.title('가상화폐 금액표시')
window.geometry('400x200')
window.resizable(0,0)

font = tkinter.font.Font(size = 30)
label = tkinter.Label(window, text = '', font = font)
label.pack()

secLabel = tkinter.Label(window, text = '')
secLabel.pack()

now_btc_price = 0
cnt = 0

def get_coin_1sec():
    #전역변수를 함수 안에서 사용하기 위해 global을 붙인다. (전역과 지역이 따로 없이 무조건 지역인듯)
    global now_btc_price
    global cnt
    while(True):
        now_btc_price = pyupbit.get_current_price("KRW-BTC")        
        cnt = cnt + 1
        #label의 text를 바꿔준다.
        label.config(text=now_btc_price)
        secLabel.config(text = str(cnt))
        time.sleep(1)
        
    # 1초마다 재귀함수 호출
    #window.after(1000, get_coin_1sec)
    
    
#get_coin_1sec()

getCoinThread = threading.Thread(target=get_coin_1sec)
getCoinThread.daemon = True
getCoinThread.start()


window.mainloop()

결과.

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기