forked from roberthsu2003/python-SQLite-MySQL
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathyoubike.py
141 lines (125 loc) · 6.2 KB
/
youbike.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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import dataSource
import tkinter as tk
from datetime import datetime
from tkinter import ttk
class Window(tk.Tk):
def __init__(self):
super().__init__()
#上方的Frame=========start
topFrame = tk.Frame(self)
tk.Label(topFrame,text="台北市youbike即時監測系統",font=("arial",20)).pack()
tk.Label(topFrame,text="(每隔1分鐘更新)",font=("arial",16)).pack()
topFrame.grid(column=0,row=0,columnspan=3,padx=20,pady=20)
#上方的Frame=========end
self.leftLabelFrame =LeftLabelFrame(self,text="左邊的")
self.leftLabelFrame.grid(column=0,row=1,padx=20,pady=20)
self.centerLabelFrame = CenterLabelFrame(self,text="中間的")
self.centerLabelFrame.grid(column=1,row=1,padx=20,pady=20)
self.rightLabelFrame = RightLabelFrame(self,text="右邊的")
self.rightLabelFrame.grid(column=2, row=1, padx=20, pady=20)
self.update_data()
def update_data(self):
nowString = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
self.leftLabelFrame.configure(text=nowString)
self.centerLabelFrame.configure(text=nowString)
self.rightLabelFrame.configure(text=nowString)
dataSource.update_youbike_data()
self.leftLabelFrame.clear_treeView()
self.leftLabelFrame.display_treeView()
self.centerLabelFrame.clear_treeView()
self.centerLabelFrame.display_treeView()
self.rightLabelFrame.clear_treeView()
self.rightLabelFrame.display_treeView()
print("update")
self.updateId = self.after(1000 * 60, self.update_data)
class LeftLabelFrame(tk.LabelFrame):
def __init__(self, *args , **kwargs):
super().__init__(*args, **kwargs)
topFrame = tk.Frame(self,background='gray')
tk.Label(topFrame, text="正常租借站點", font=("arial", 20),background='gray',fg="white").pack(padx=10,pady=10)
normal_count = dataSource.get_count_of_normal()
tk.Label(topFrame, text=f"數量:{normal_count}",background='gray',fg='#ffffff', font=("arial",20)).pack(padx=10,pady=10)
topFrame.pack(pady=20)
self.treeView = ttk.Treeview(self,columns=('sna','tot','sbi','bemp'),show="headings")
self.treeView.heading('sna',text='名稱')
self.treeView.heading('tot', text='總數')
self.treeView.heading('sbi', text='可借')
self.treeView.heading('bemp', text='可還')
self.treeView.column('sna',width=200)
self.treeView.column('tot',width=50)
self.treeView.column('sbi',width=50)
self.treeView.column('bemp',width=50)
self.treeView.pack()
self.display_treeView()
def clear_treeView(self):
# 清除tree內容
for i in self.treeView.get_children():
self.treeView.delete(i)
def display_treeView(self):
normal_list = dataSource.get_list_of_normal()
for item in normal_list:
itemList = list(item.values())
self.treeView.insert('', 'end', values=itemList)
class CenterLabelFrame(tk.LabelFrame):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
topFrame = tk.Frame(self, background='gray')
tk.Label(topFrame, text="可租用少於3台", font=("arial", 20), background='gray', fg="white").pack(padx=10, pady=10)
normal_count = dataSource.get_count_of_less_bike()
tk.Label(topFrame, text=f"數量:{normal_count}", background='gray', fg='#ffffff', font=("arial", 20)).pack(padx=10,
pady=10)
topFrame.pack(pady=20)
self.treeView = ttk.Treeview(self, columns=('sna', 'tot', 'sbi', 'bemp'), show="headings")
self.treeView.heading('sna', text='名稱')
self.treeView.heading('tot', text='總數')
self.treeView.heading('sbi', text='可借')
self.treeView.heading('bemp', text='可還')
self.treeView.column('sna', width=200)
self.treeView.column('tot', width=50)
self.treeView.column('sbi', width=50)
self.treeView.column('bemp', width=50)
self.treeView.pack()
self.display_treeView()
def clear_treeView(self):
# 清除tree內容
for i in self.treeView.get_children():
self.treeView.delete(i)
def display_treeView(self):
less_list = dataSource.get_list_of_less_bike()
for item in less_list:
itemList = list(item.values())
self.treeView.insert('', 'end', values=itemList)
class RightLabelFrame(tk.LabelFrame):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
topFrame = tk.Frame(self, background='gray')
tk.Label(topFrame, text="可還車量少於3台", font=("arial", 20), background='gray', fg="white").pack(padx=10, pady=10)
normal_count = dataSource.get_count_of_less_stop()
tk.Label(topFrame, text=f"數量:{normal_count}", background='gray', fg='#ffffff', font=("arial", 20)).pack(padx=10,
pady=10)
topFrame.pack(pady=20)
self.treeView = ttk.Treeview(self, columns=('sna', 'tot', 'sbi', 'bemp'), show="headings")
self.treeView.heading('sna', text='名稱')
self.treeView.heading('tot', text='總數')
self.treeView.heading('sbi', text='可借')
self.treeView.heading('bemp', text='可還')
self.treeView.column('sna', width=200)
self.treeView.column('tot', width=50)
self.treeView.column('sbi', width=50)
self.treeView.column('bemp', width=50)
self.treeView.pack()
self.display_treeView()
def clear_treeView(self):
# 清除tree內容
for i in self.treeView.get_children():
self.treeView.delete(i)
def display_treeView(self):
less_stop_list = dataSource.get_list_of_less_stop()
for item in less_stop_list:
itemList = list(item.values())
self.treeView.insert('', 'end', values=itemList)
if __name__=="__main__":
dataSource.update_youbike_data()
window = Window()
window.title("台北市youbike及時監測資料")
window.mainloop()