firstlabel_label3 = ttk.Label(firstlabel, text ="콤보1: ") # 콤보박스 추가
firstlabel_label3.grid(column=0, row=2)

label2_combo = tk.StringVar() #레이블1의 텍스트 입력 박스2
label2_combo = ttk.Combobox(firstlabel, width=30, textvariable=label2_combo)
label2_combo['values'] = ('option1','option2', 'option3','option4')
label2_combo.current(0)
label2_combo.grid(column=1, row=2)
label2_combo.configure(state='readonly')  #콤보박스의 텍스트를 편집 불가능하게 읽기 전용으로 하는 것이다

 

def Excute:

print ( label2_combo.get())  # def 콜백함수와 쓰는경우, 콤보박스의 데이터 출력이 가능

굉장히 간단한
업비트 코인 시세 조회용 GUI
이미 만들어둔 upbeatref.py를 import 해야함

 

===================

import tkinter as tk
from tkinter import ttk
from tkinter import scrolledtext
import upbeatref

win = tk.Tk()
win.title("API test")

tabcontrol = ttk.Notebook(win)

tab1 = ttk.Frame(tabcontrol) #2개의 탭을 나누는 것
tabcontrol.add(tab1, text="업비트")
tab2 = ttk.Frame(tabcontrol)
tabcontrol.add(tab2, text="빗썸")
tabcontrol.pack(expand=1, fill="both")

#==========================================================================

firstlabel = ttk.LabelFrame(tab1, text="조회 조건") # 첫번째 테이블에서 레이블 프레임을 만듬
firstlabel.grid (column=0, row=0, padx=8, pady=4)

firstlabel_label1 = ttk.Label(firstlabel, text ="코인 이름: ") # 레이블프레임에 소속된 제목(레이블1)
firstlabel_label1.grid(column=0, row=0)

label1_textbox = tk.StringVar() #레이블1의 텍스트 입력 박스1
label1_textbox = ttk.Entry(firstlabel, width=30, textvariable=label1_textbox )
label1_textbox.grid(column=1, row=0)

#==========================================================================

#액션 클릭버튼 추가

def Execute():

 try:
ResultViewlabel_ScrollBox.delete(1.0, tk.END) # 콘솔창 다 지우기 (초기화)
action.configure(text="실행중") # 버튼의 실행 중 상태변경
action.configure(state="disabled")
print (label1_textbox.get()) #텍스트 박스 입력한 내용을 get
ResultViewlabel_ScrollBox.insert(tk.INSERT, "현재 " + label1_textbox.get() + "의 가격은 " + str ( upbeatref.CoinAPI(label1_textbox.get())) + "원입니다" + "\n")
ResultViewlabel_ScrollBox.see(tk.END) #중요한 거다. 스크롤이 길어지면 최하단을 보게 한다

action.configure(text="시세 조회") # 버튼의 실행완료 상태 변경
action.configure(state="abled")

except:
ResultViewlabel_ScrollBox.insert(tk.INSERT, "ERROR : 코인 이름을 다시 확인해 주세요" + "\n")
ResultViewlabel_ScrollBox.see(tk.END) #중요한 거다. 스크롤이 길어지면 최하단을 보게 한다
action.configure(text="시세 조회") # 버튼의 실행완료 상태 변경
action.configure(state="abled")

action = ttk.Button(firstlabel, text="시세 조회", command=Execute)
action.grid(column=0, row=2, sticky="W")

#==========================================================================

ResultViewlabel = ttk.LabelFrame(tab1, text="결과 확인") # 실행결과를 확인하는 콘솔창
ResultViewlabel.grid (column=0, row=3, padx=8, pady=4)

ResultViewlabel_ViewLabel = ttk.Label(ResultViewlabel, text ="Console: ")
ResultViewlabel_ViewLabel.grid(column=0, row=0, sticky="W")

ResultViewlabel_ScrollBox = scrolledtext.ScrolledText(ResultViewlabel, width=40, height=10, wrap=tk.WORD, font=('Normal',9))
ResultViewlabel_ScrollBox.grid(column=0, row=1) # 스크롤 형식의 텍스트박스 창 (콘솔창)

win.mainloop()

============================================================================

upbeatref.py

import json
import requests
import urllib
from urllib.request import Request, urlopen

def CoinAPI(a):
coincodedict = coincodedict = {'비트코인': 'KRW-BTC', '대시': 'KRW-DASH', '이더리움': 'KRW-ETH', '네오': 'KRW-NEO', '메탈': 'KRW-MTL', '라이트코인': 'KRW-LTC', '스트라티스': 'KRW-STRAT', '리플': 'KRW-XRP', '이더리움클래식': 'KRW-ETC', '오미세고': 'KRW-OMG', '스테이터스네트워크토큰': 'KRW-SNT', '웨이브': 'KRW-WAVES', '피벡스': 'KRW-PIVX', '넴': 'KRW-XEM', '지캐시': 'KRW-ZEC', '모네로': 'KRW-XMR', '퀀텀': 'KRW-QTUM', '골렘': 'KRW-GNT', '리스크': 'KRW-LSK', '스팀': 'KRW-STEEM', '스텔라루멘': 'KRW-XLM', '아더': 'KRW-ARDR', '코모도': 'KRW-KMD', '아크': 'KRW-ARK', '스토리지': 'KRW-STORJ', '그로스톨코인': 'KRW-GRS', '버트코인': 'KRW-VTC', '어거': 'KRW-REP', '아인스타이늄': 'KRW-EMC2', '에이다': 'KRW-ADA', '스팀달러': 'KRW-SBD', '블록틱스': 'KRW-TIX', '파워렛저': 'KRW-POWR', '머큐리': 'KRW-MER', '비트코인골드': 'KRW-BTG', '아이콘': 'KRW-ICX', '이오스': 'KRW-EOS', '스톰': 'KRW-STORM', '트론': 'KRW-TRX', '크립토닷컴': 'KRW-MCO', '시아코인': 'KRW-SC', '기프토': 'KRW-GTO', '이그니스': 'KRW-IGNIS', '온톨로지': 'KRW-ONT', '디크레드': 'KRW-DCR', '질리카': 'KRW-ZIL', '폴리매쓰': 'KRW-POLY', '제로엑스': 'KRW-ZRX', '시린토큰': 'KRW-SRN', '룸네트워크': 'KRW-LOOM', '비트코인캐시': 'KRW-BCH', '애드토큰': 'KRW-ADT', '애드엑스': 'KRW-ADX', '베이직어텐션토큰': 'KRW-BAT', '아이오에스티': 'KRW-IOST', '디마켓': 'KRW-DMT', '리퍼리움': 'KRW-RFR', '시빅': 'KRW-CVC', '에브리피디아': 'KRW-IQ', '아이오타': 'KRW-IOTA', '오에스티': 'KRW-OST', '메인프레임': 'KRW-MFT', '온톨로지가스': 'KRW-ONG', '가스': 'KRW-GAS', '메디블록': 'KRW-MEDX', '센티넬프로토콜': 'KRW-UPP', '엘프': 'KRW-ELF', '카이버네트워크': 'KRW-KNC', '비트코인에스브이': 'KRW-BSV', '쎄타토큰': 'KRW-THETA', '왁스': 'KRW-WAX', '엔도르': 'KRW-EDR', '쿼크체인': 'KRW-QKC', '콘텐츠프로토콜토큰': 'KRW-CPT', '비트토렌트': 'KRW-BTT', '모스코인': 'KRW-MOC'}
urlTicker = urllib.request.urlopen('https://api.upbit.com/v1/ticker?markets=' +str(coincodedict[a]) )
readTicker = urlTicker.read()
jsonTicker = json.loads(readTicker.decode('utf-8'))
return str(int(jsonTicker[0]['trade_price']))

 

버튼을 누르면 

두 텍스트박스를 단순이 합쳐서 보여주는 GUI

굉장히 심플하지만 거의 GUI 뼈대와 같은 중요한 화면이다

 


import tkinter as tk
from tkinter import ttk
from tkinter import scrolledtext


win = tk.Tk()
win.title("API test")


tabcontrol = ttk.Notebook(win)

tab1 = ttk.Frame(tabcontrol) #2개의 탭을 나누는 것
tabcontrol.add(tab1, text="탭원")
tab2 = ttk.Frame(tabcontrol)
tabcontrol.add(tab2, text="탭투")
tabcontrol.pack(expand=1, fill="both")

#==========================================================================

firstlabel = ttk.LabelFrame(tab1, text="첫번째 레이블 프레임") # 첫번째 테이블에서 레이블 프레임을 만듬
firstlabel.grid (column=0, row=0, padx=8, pady=4)

firstlabel_label1 = ttk.Label(firstlabel, text ="제목1: ") # 레이블프레임에 소속된 제목(레이블1)
firstlabel_label1.grid(column=0, row=0)

label1_textbox = tk.StringVar() #레이블1의 텍스트 입력 박스1
label1_textbox = ttk.Entry(firstlabel, width=30, textvariable=label1_textbox )
label1_textbox.grid(column=1, row=0)


firstlabel_label2 = ttk.Label(firstlabel, text ="제목2: ") # 레이블프레임에 소속된 제목2(레이블12)
firstlabel_label2.grid(column=0, row=1)

label2_textbox = tk.StringVar() #레이블1의 텍스트 입력 박스2
label2_textbox = ttk.Entry(firstlabel, width=30, textvariable=label2_textbox )
label2_textbox.grid(column=1, row=1)

#==========================================================================
#액션 클릭버튼 추가

def Execute():

action.configure(text="실행중") # 버튼의 실행 중 상태변경
action.configure(state="disabled")
print (label1_textbox.get()) #텍스트 박스 입력한 내용을 get
print (label2_textbox.get())
ResultViewlabel_ScrollBox.insert(tk.INSERT, label1_textbox.get() + label2_textbox.get() + "\n")
ResultViewlabel_ScrollBox.see(tk.END) #중요한 거다. 스크롤이 길어지면 최하단을 보게 한다

action.configure(text="실행") # 버튼의 실행완료 상태 변경
action.configure(state="abled")



action = ttk.Button(firstlabel, text="실행", command=Execute)
action.grid(column=0, row=2, sticky="W")

#==========================================================================

ResultViewlabel = ttk.LabelFrame(tab1, text="결과 확인") # 실행결과를 확인하는 콘솔창
ResultViewlabel.grid (column=0, row=3, padx=8, pady=4)

ResultViewlabel_ViewLabel = ttk.Label(ResultViewlabel, text ="Console: ")
ResultViewlabel_ViewLabel.grid(column=0, row=0, sticky="W")

ResultViewlabel_ScrollBox = scrolledtext.ScrolledText(ResultViewlabel, width=40, height=10, wrap=tk.WORD, font=('Normal',9))
ResultViewlabel_ScrollBox.grid(column=0, row=1) # 스크롤 형식의 텍스트박스 창 (콘솔창)

win.mainloop()

아직 동작기능은 없다

VIEW 화면 구성

 


import tkinter as tk
from tkinter import ttk
from tkinter import scrolledtext


win = tk.Tk()
win.title("API test")


tabcontrol = ttk.Notebook(win)

tab1 = ttk.Frame(tabcontrol) #2개의 탭을 나누는 것
tabcontrol.add(tab1, text="탭원")
tab2 = ttk.Frame(tabcontrol)
tabcontrol.add(tab2, text="탭투")
tabcontrol.pack(expand=1, fill="both")

#==========================================================================

firstlabel = ttk.LabelFrame(tab1, text="첫번째 레이블 프레임") # 첫번째 테이블에서 레이블 프레임을 만듬
firstlabel.grid (column=0, row=0, padx=8, pady=4)

firstlabel_label1 = ttk.Label(firstlabel, text ="제목1: ") # 레이블프레임에 소속된 제목(레이블1)
firstlabel_label1.grid(column=0, row=0)

label1_textbox = tk.StringVar() #레이블1의 텍스트 입력 박스1
label1_textbox = ttk.Entry(firstlabel, width=30, textvariable=label1_textbox )
label1_textbox.grid(column=1, row=0)


firstlabel_label2 = ttk.Label(firstlabel, text ="제목2: ") # 레이블프레임에 소속된 제목2(레이블12)
firstlabel_label2.grid(column=0, row=1)

label2_textbox = tk.StringVar() #레이블1의 텍스트 입력 박스2
label2_textbox = ttk.Entry(firstlabel, width=30, textvariable=label2_textbox )
label2_textbox.grid(column=1, row=1)

#==========================================================================
#액션 클릭버튼 추가

def Execute():
print ('empty')


action = ttk.Button(firstlabel, text="실행", command=Execute)
action.grid(column=0, row=2, sticky="W")


#==========================================================================

ResultViewlabel = ttk.LabelFrame(tab1, text="결과 확인") # 실행결과를 확인하는 콘솔창
ResultViewlabel.grid (column=0, row=3, padx=8, pady=4)

ResultViewlabel_ViewLabel = ttk.Label(ResultViewlabel, text ="Console: ")
ResultViewlabel_ViewLabel.grid(column=0, row=0, sticky="W")

ResultViewlabel_ScrollBox = scrolledtext.ScrolledText(ResultViewlabel, width=40, height=10, wrap=tk.WORD, font=('Normal',9))
ResultViewlabel_ScrollBox.grid(column=0, row=1) # 스크롤 형식의 텍스트박스 창 (콘솔창)

win.mainloop()

import tkinter as tk
from tkinter import ttk

win = tk.Tk()
win.title("API test")

tabcontrol = ttk.Notebook(win)
tab1 = ttk.Frame(tabcontrol)
tabcontrol.add(tab1, text="탭원")
tab2 = ttk.Frame(tabcontrol)
tabcontrol.add(tab2, text="탭투")
tabcontrol.pack(expand=1, fill="both")


firstlabel = ttk.LabelFrame(tab1, text="첫번째 레이블 프레임") # 첫번째 테이블에서 레이블 프레임을 만듬
firstlabel.grid (column=0, row=0, padx=8, pady=4)

firstlabel_label1 = ttk.Label(firstlabel, text ="제목1: ") # 레이블프레임에 소속된 제목(레이블1)
firstlabel_label1.grid(column=0, row=0)

label1_textbox = tk.StringVar() #레이블1의 텍스트 입력 박스1
label1_textbox = ttk.Entry(firstlabel, width=30, textvariable=label1_textbox )
label1_textbox.grid(column=1, row=0)


firstlabel_label2 = ttk.Label(firstlabel, text ="제목2: ") # 레이블프레임에 소속된 제목2(레이블12)
firstlabel_label2.grid(column=0, row=1, sticky="W")

label2_textbox = tk.StringVar() #레이블1의 텍스트 입력 박스2
label2_textbox = ttk.Entry(firstlabel, width=30, textvariable=label2_textbox )
label2_textbox.grid(column=1, row=1)

win.mainloop()

import tkinter as tk
from tkinter import ttk

win = tk.Tk()
win.title("API test")
tabcontrol = ttk.Notebook(win)
tab1 = ttk.Frame(tabcontrol)
tabcontrol.add(tab1, text="탭원")
tab2 = ttk.Frame(tabcontrol)
tabcontrol.add(tab2, text="탭투")
tabcontrol.pack(expand=1, fill="both")
win.mainloop()


import tkinter as tk   # 모듈 가져오기

win = tk.Tk()     

win.title("API test")  # GUI 윈도우 제목

 

win.resizable(False, False) # 가로 세로 크기변경을 허용/막기 설정


win.mainloop()  # GUI 유지

+ Recent posts