Programming/Python
Python_tkinter_Simple Stock Index_미국주식지표
Bear_V
2021. 3. 4. 01:05
tkinter를 이용하여, 미국주식지표들을 볼 수 있는 프로그램을 작성해보았다.
총 다섯가지 항목을 지원한다.
- Dowjones
- S&P500
- NASDAQ
- Gold
- 10 year Treasury Rate
Refresh를 클릭하면 업데이트 된 지표를 볼 수 있다.
코드는 아래와 같다.
from tkinter import *
import tkinter.font as tkFont
from selenium import webdriver
import time
import os
def resource_path(relative_path):
try:
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
root = Tk()
root.title('Stock Market Index')
root. geometry('210x200')
root.resizable(False, False)
root.configure(background='black')
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('headless')
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome('chromedriver',options=chrome_options)
driver.implicitly_wait(1)
driver.get("https://www.marketwatch.com/investing/bond/tmubmusd10y?countrycode=bx")
i = 1
''' 각종 함수 '''
font = tkFont.Font(family='Gadugi', size=10)#, weight='bold')
font_color = '#01ceec'
bg_color = 'black'
# index 불러오기
def get_index():
# dow
dow = driver.find_element_by_xpath('/html/body/section/div[2]/div/div[2]/div/div[1]/table/tbody/tr[1]/td[3]/bg-quote')
dow_per = driver.find_element_by_xpath('/html/body/section/div[2]/div/div[2]/div/div[1]/table/tbody/tr[1]/td[5]/bg-quote')
time.sleep(1)
dow_lbl_2 = Label(root, text=dow.text, font=font, fg='white', bg=bg_color).grid(row=i+1, column=1)
#dow_lbl_3 = Label(root, text=dow_per.text).grid(row=1, column=2)
''' 인덱스 체크 '''
if '-' in dow_per.text:
dow_lbl_3 = Label(root, text=dow_per.text, fg='#A4193D', font=font, bg='#2d0d0b').grid(row=i+1, column=2, sticky=W+E)
else:
dow_lbl_3 = Label(root, text=dow_per.text, fg='#009d64', font=font, bg='#003322').grid(row=i+1, column=2, sticky=W+E)
print('Dow : ', dow.text, dow_per.text)
# snp
snp = driver.find_element_by_xpath('/html/body/section/div[2]/div/div[2]/div/div[1]/table/tbody/tr[2]/td[3]/bg-quote')
snp_per = driver.find_element_by_xpath('/html/body/section/div[2]/div/div[2]/div/div[1]/table/tbody/tr[2]/td[5]/bg-quote')
time.sleep(1)
snp_lbl_2 = Label(root, text=snp.text, font=font, fg='white', bg=bg_color).grid(row=i+2, column=1)
#snp_lbl_3 = Label(root, text=snp_per.text).grid(row=2, column=2)
''' 인덱스 체크 '''
if '-' in snp_per.text:
snp_lbl_3 = Label(root, text=snp_per.text, fg='#A4193D', font=font, bg='#2d0d0b').grid(row=i+2, column=2, sticky=W+E)
else:
snp_lbl_3 = Label(root, text=snp_per.text, fg='#009d64', font=font, bg='#003322').grid(row=i+2, column=2, sticky=W+E)
print('S&P : ', snp.text, snp_per.text)
# Nasdaq
nas = driver.find_element_by_xpath('/html/body/section/div[2]/div/div[2]/div/div[1]/table/tbody/tr[3]/td[3]/bg-quote')
nas_per = driver.find_element_by_xpath('/html/body/section/div[2]/div/div[2]/div/div[1]/table/tbody/tr[3]/td[5]/bg-quote')
nas_lbl_2 = Label(root, text=nas.text, font=font, fg='white', bg=bg_color).grid(row=i+3, column=1)
#nas_lbl_3 = Label(root, text=nas_per.text).grid(row=3, column=2)
''' 인덱스 체크 '''
if '-' in nas_per.text:
nas_lbl_3 = Label(root, text=nas_per.text, fg='#A4193D', font=font, bg='#2d0d0b').grid(row=i+3, column=2, sticky=W+E)
else:
nas_lbl_3 = Label(root, text=nas_per.text, fg='#009d64', font=font, bg='#003322').grid(row=i+3, column=2, sticky=W+E)
print('Nasdaq : ', nas.text, nas_per.text)
# Gold
gold = driver.find_element_by_xpath('/html/body/section/div[2]/div/div[2]/div/div[1]/table/tbody/tr[5]/td[3]/bg-quote')
gold_per = driver.find_element_by_xpath('/html/body/section/div[2]/div/div[2]/div/div[1]/table/tbody/tr[5]/td[5]/bg-quote')
time.sleep(1)
gold_lbl_2 = Label(root, text=gold.text, font=font, fg='white', bg=bg_color).grid(row=i+4, column=1)
#gold_lbl_3 = Label(root, text=gold_per.text).grid(row=4, column=2)
''' 인덱스 체크 '''
if '-' in gold_per.text:
gold_lbl_3 = Label(root, text=gold_per.text, fg='#A4193D', font=font, bg='#2d0d0b').grid(row=i+4, column=2, sticky=W+E)
else:
gold_lbl_3 = Label(root, text=gold_per.text, fg='#009d64', font=font, bg='#003322').grid(row=i+4, column=2, sticky=W+E)
print('Gold : ', gold.text, gold_per.text)
# US 10 Year Treasury Note
yt_10 = driver.find_elements_by_tag_name('bg-quote')[45]
yt_10_per = driver.find_elements_by_tag_name('bg-quote')[47]
yt_10_lbl_2 = Label(root, text=yt_10.text, font=font, fg='white', bg=bg_color).grid(row=i+5, column=1)
#yt_10_lbl_3 = Label(root, text=yt_10_per.text).grid(row=5, column=2)
''' 인덱스 체크 '''
if '-' in yt_10_per.text:
yt_10_lbl_3 = Label(root, text=yt_10_per.text, fg='#A4193D', font=font, bg='#2d0d0b').grid(row=i+5, column=2, sticky=W+E)
else:
yt_10_lbl_3 = Label(root, text=yt_10_per.text, fg='#009d64', font=font, bg='#003322').grid(row=i+5, column=2, sticky=W+E)
print('US 10 Year Treasury : ', yt_10.text, '% ', yt_10_per.text)
get_index()
name_lbl = Label(root, text='SIMPLE INDEX', fg='white', bg=bg_color, font=tkFont.Font(family='Gadugi', size=15,weight='bold')).grid(row=i-1, column=i-1, columnspan=3, sticky=W+E)
btn_index = Button(root, text='Refresh',fg=font_color, bg='#001518', command=get_index)
btn_index.grid(row=i, column=i, sticky=W+E)
dow_lbl = Label(root, text='Dow : ', font=font, fg=font_color, bg=bg_color).grid(row=i+1, column=0, sticky=W)
snp_lbl = Label(root, text='S&P : ', font=font, fg=font_color, bg=bg_color).grid(row=i+2, column=0, sticky=W)
nas_lbl = Label(root, text='NASDAG : ', font=font, fg=font_color, bg=bg_color).grid(row=i+3, column=0, sticky=W)
gold_lbl = Label(root, text='Gold : ', font=font, fg=font_color, bg=bg_color).grid(row=i+4, column=0, sticky=W)
yt_10_lbl = Label(root, text='10YT : ', font=font, fg=font_color, bg=bg_color).grid(row=i+5, column=0, sticky=W)
james_lbl = Label(root, text='made by james', font=font, fg='white', bg=bg_color, justify='center').grid(row=i+6, column=0, sticky=W+E)
#driver.quit()
root.mainloop()
bjc0417/SImple-Stock-Index
Contribute to bjc0417/SImple-Stock-Index development by creating an account on GitHub.
github.com