-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgui.py
80 lines (64 loc) · 2.59 KB
/
gui.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# Class
from stock import Get
from chart import Chart
from analyze import Analyze
# GUI
from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.tabbedpanel import TabbedPanel
kv = '''
<TextInput>:
font_name: 'fonts/jf-openhuninn-2.0.ttf'
<Label>:
font_name: 'fonts/jf-openhuninn-2.0.ttf'
'''
Builder.load_string(kv)
Builder.load_file('kivy.kv')
class MyLayout(TabbedPanel):
pass
class YYJStock(MDApp):
def build(self):
self.theme_cls.theme_style = 'Dark'
self.theme_cls.primary_palette = 'Gray'
return MyLayout()
def img(self, source):
self.root.ids.img.source = source
self.root.ids.img.reload()
def on_enter(self, instance):
code = instance.text
get = Get()
get.search(code)
stock_id = get.stock_id
stock_name = get.stock_name
stock_type = get.stock_type
if stock_id is None: # Not found
self.img('img/not-found.png')
else:
search = Get().search(code)
stock_id = search.get('stock_id')
self.basic_info(stock_id, stock_name, stock_type)
Chart().generate_chart(stock_id, 60)
self.img('img/chart.png')
# self.img('img/no-internet.png')
def basic_info(self, stock_id, stock_name, stock_type):
get = Get()
price = get.price(stock_id)
yf_fin = get.yf_fin(stock_id)
fin = get.table(stock_id, '年度', '營業毛利(%)', '營業利益(%)', '稅後淨利(%)', 'ROE(%)', 'ROA(%)', '稅後EPS', rows = 5)
label_text = f'股票代碼:{stock_id}\n股票名稱:{stock_name}\n公司類型:{stock_type}\n開盤:{price["open"]}\n收盤:{price["close"]}\n最高:{price["high"]}\n最低:{price["low"]}'
fin_text = f'目前本益比:{yf_fin["pe"]}\n每股淨值:{yf_fin["bv"]}\n基本財報:\n{fin}'
self.root.ids.label_text.text = label_text
self.root.ids.financial.text = fin_text
analyze = Analyze()
columns = ['營業毛利(%)', 'ROE(%)', 'ROA(%)', '稅後EPS']
years = 5
data = analyze.get_specific_field('2330', columns, 0, years)
analyze_results = analyze.analyze_data(data)
analyze_text = ''
for col, analyze in analyze_results.items():
average = analyze['average']
changes = analyze['changes']
analyze_text += f'{col}\n近 {years} 年平均值:{average}\n近 {years} 年漲幅百分比:{changes}\n\n'
self.root.ids.analyze.text = analyze_text
if __name__ == '__main__':
YYJStock().run()