ake178178 commited on
Commit
db3ac52
·
verified ·
1 Parent(s): 609b9f0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -58
app.py CHANGED
@@ -19,94 +19,72 @@ def init_data_file():
19
  # 保存活動數據
20
  def save_activity(activity):
21
  timestamp = datetime.datetime.now()
22
- record = {"activity": activity, "timestamp": timestamp.strftime("%Y-%m-%d %H:%M:%S")}
23
  with open(data_file, "r") as file:
24
  data = json.load(file)
25
  data.append(record)
26
  with open(data_file, "w") as file:
27
  json.dump(data, file)
28
- return f"記錄成功:{activity} - {record['timestamp']}"
29
 
30
- # 獲取活動數據並展示為表格
31
  def get_activity_data():
32
- with open(data_file, "r") as file:
33
- data = json.load(file)
34
- df = pd.DataFrame(data)
35
- return df if not df.empty else pd.DataFrame(columns=["活動", "時間"])
 
 
36
 
37
  # 驗證用戶登錄
38
  def login(username, password):
39
  if username in users and users[username] == password:
40
- return True, "登錄成功"
41
  else:
42
- return False, "用戶名或密碼錯誤"
43
 
44
  # 主界面
45
  def main_interface():
46
- with gr.Blocks(css=custom_css) as app:
 
 
47
  # 登錄界面
48
- gr.Markdown("## 🐾 狗狗活動記錄器 - 登錄")
49
- with gr.Row():
 
50
  username = gr.Textbox(label="用戶名", placeholder="輸入用戶名")
51
  password = gr.Textbox(label="密碼", type="password", placeholder="輸入密碼")
52
- login_btn = gr.Button(value="登錄")
53
- login_msg = gr.Textbox(label="消息", interactive=False, visible=True)
54
 
55
- # 主內容(隱藏直到登錄成功)
56
- main_content = gr.Column(visible=False)
57
- with main_content:
58
  gr.Markdown("### 🚀 點擊按鈕記錄活動")
59
- # 活動按鈕區域
60
  buttons = ["拉屎", "尿尿", "全吃了", "吃了一半", "沒怎麼吃"]
61
- with gr.Row():
62
- activity_buttons = [gr.Button(value=btn) for btn in buttons]
63
 
 
64
  gr.Markdown("### 📊 活動記錄")
65
- data_table = gr.Dataframe(headers=["活動", "時間"], datatype=["str", "str"], interactive=False, max_rows=10)
66
 
67
- # 功能邏輯
68
- def handle_login(username, password):
69
- success, msg = login(username, password)
70
- return gr.update(visible=success), gr.update(value=msg)
 
 
71
 
72
- def handle_activity(activity):
73
- save_activity(activity)
74
- return get_activity_data()
75
-
76
- # 綁定登錄按鈕事件
77
- login_btn.click(handle_login, inputs=[username, password], outputs=[main_content, login_msg])
78
-
79
- # 綁定活動按鈕事件
80
- for btn, activity in zip(activity_buttons, buttons):
81
  btn.click(
82
- lambda a=activity: handle_activity(a),
83
  inputs=[],
84
- outputs=[data_table]
85
  )
86
 
87
  return app
88
 
89
- # 初始化數據文件
90
- init_data_file()
91
-
92
- # 自定義CSS來優化小屏幕顯示
93
- custom_css = """
94
- h1, h2, h3 {
95
- text-align: center;
96
- }
97
- @media (max-width: 768px) {
98
- .gradio-container {
99
- padding: 10px;
100
- }
101
- .gr-button {
102
- font-size: 12px;
103
- padding: 8px;
104
- }
105
- input, textarea {
106
- font-size: 12px;
107
- }
108
- }
109
- """
110
-
111
  # 啟動應用
112
  main_interface().launch(share=True, server_name="0.0.0.0", server_port=7860)
 
19
  # 保存活動數據
20
  def save_activity(activity):
21
  timestamp = datetime.datetime.now()
22
+ record = {"活動": activity, "時間": timestamp.strftime("%Y-%m-%d %H:%M:%S")}
23
  with open(data_file, "r") as file:
24
  data = json.load(file)
25
  data.append(record)
26
  with open(data_file, "w") as file:
27
  json.dump(data, file)
28
+ return f"記錄成功:{activity} - {record['時間']}", pd.DataFrame(data)
29
 
30
+ # 獲取活動數據
31
  def get_activity_data():
32
+ try:
33
+ with open(data_file, "r") as file:
34
+ data = json.load(file)
35
+ return pd.DataFrame(data)
36
+ except:
37
+ return pd.DataFrame(columns=["活動", "時間"])
38
 
39
  # 驗證用戶登錄
40
  def login(username, password):
41
  if username in users and users[username] == password:
42
+ return gr.update(visible=False), gr.update(visible=True), "登錄成功"
43
  else:
44
+ return gr.update(visible=True), gr.update(visible=False), "用戶名或密碼錯誤"
45
 
46
  # 主界面
47
  def main_interface():
48
+ init_data_file()
49
+
50
+ with gr.Blocks() as app:
51
  # 登錄界面
52
+ login_section = gr.Column(visible=True)
53
+ with login_section:
54
+ gr.Markdown("## 🐾 狗狗活動記錄器 - 登錄")
55
  username = gr.Textbox(label="用戶名", placeholder="輸入用戶名")
56
  password = gr.Textbox(label="密碼", type="password", placeholder="輸入密碼")
57
+ login_btn = gr.Button("登錄")
58
+ login_msg = gr.Textbox(label="消息", interactive=False)
59
 
60
+ # 主內容界面
61
+ main_section = gr.Column(visible=False)
62
+ with main_section:
63
  gr.Markdown("### 🚀 點擊按鈕記錄活動")
64
+ activity_buttons = gr.Row()
65
  buttons = ["拉屎", "尿尿", "全吃了", "吃了一半", "沒怎麼吃"]
66
+ activity_btns = [gr.Button(value=btn) for btn in buttons]
 
67
 
68
+ # 活動記錄表格
69
  gr.Markdown("### 📊 活動記錄")
70
+ data_table = gr.Dataframe(value=get_activity_data(), interactive=False)
71
 
72
+ # 登錄邏輯
73
+ login_btn.click(
74
+ login,
75
+ inputs=[username, password],
76
+ outputs=[login_section, main_section, login_msg]
77
+ )
78
 
79
+ # 綁定按鈕事件
80
+ for btn, activity in zip(activity_btns, buttons):
 
 
 
 
 
 
 
81
  btn.click(
82
+ lambda a=activity: save_activity(a),
83
  inputs=[],
84
+ outputs=[login_msg, data_table]
85
  )
86
 
87
  return app
88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  # 啟動應用
90
  main_interface().launch(share=True, server_name="0.0.0.0", server_port=7860)