ake178178 commited on
Commit
763b9f0
·
verified ·
1 Parent(s): bd8486d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -29
app.py CHANGED
@@ -3,7 +3,7 @@ import datetime
3
  import pandas as pd
4
  import json
5
 
6
- # 模擬數據存儲(可以換成 Firebase 或雲端數據庫)
7
  data_file = "dog_activity_data.json"
8
  users = {"admin": "password"} # 模擬用戶數據
9
 
@@ -32,7 +32,7 @@ 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 "目前沒有數據。"
36
 
37
  # 驗證用戶登錄
38
  def login(username, password):
@@ -43,29 +43,26 @@ def login(username, password):
43
 
44
  # 主界面
45
  def main_interface():
46
- with gr.Blocks() as app:
47
  # 登錄界面
48
- with gr.Container():
49
- gr.Markdown("## 狗狗活動記錄器 - 登錄", elem_id="header")
50
- with gr.Row():
51
- username = gr.Textbox(label="用戶名", placeholder="輸入用戶名", scale=1)
52
- password = gr.Textbox(label="密碼", type="password", placeholder="輸入密碼", scale=1)
53
- with gr.Row():
54
- login_btn = gr.Button(value="登錄", scale=1)
55
- login_msg = gr.Textbox(label="登錄消息", interactive=False)
56
-
57
- # 隱藏的主界面
58
- main_content = gr.Group(visible=False)
59
  with main_content:
60
- with gr.Container():
61
- gr.Markdown("### 點擊按鈕記錄活動", elem_id="subheader")
62
- # 使用 Row 使按钮自动适应屏幕宽度
63
- with gr.Row(equal_height=True):
64
- buttons = ["拉屎", "尿尿", "全吃了", "吃了一半", "沒怎麼吃"]
65
- activity_buttons = [gr.Button(value=btn, scale=1) for btn in buttons]
66
 
67
- gr.Markdown("### 活動記錄", elem_id="subheader")
68
- data_table = gr.Dataframe(headers=["活動", "時間"], datatype=["str", "str"], interactive=False, height=300)
69
 
70
  # 功能邏輯
71
  def handle_login(username, password):
@@ -74,15 +71,17 @@ def main_interface():
74
 
75
  def handle_activity(activity):
76
  save_activity(activity)
77
- return get_activity_data(), f"記錄成功:{activity}"
78
 
 
79
  login_btn.click(handle_login, inputs=[username, password], outputs=[main_content, login_msg])
80
 
 
81
  for btn, activity in zip(activity_buttons, buttons):
82
  btn.click(
83
  lambda a=activity: handle_activity(a),
84
  inputs=[],
85
- outputs=[data_table, gr.Textbox(interactive=False, visible=False)]
86
  )
87
 
88
  return app
@@ -92,7 +91,7 @@ init_data_file()
92
 
93
  # 自定義CSS來優化小屏幕顯示
94
  custom_css = """
95
- #header, #subheader {
96
  text-align: center;
97
  }
98
  @media (max-width: 768px) {
@@ -101,13 +100,13 @@ custom_css = """
101
  }
102
  .gr-button {
103
  font-size: 12px;
104
- padding: 6px 12px;
105
  }
106
- .gr-textbox, .gr-dataframe {
107
  font-size: 12px;
108
  }
109
  }
110
  """
111
 
112
- # 運行應用
113
- main_interface().launch(share=True, server_name="0.0.0.0", server_port=7860, css=custom_css)
 
3
  import pandas as pd
4
  import json
5
 
6
+ # 模擬數據存儲
7
  data_file = "dog_activity_data.json"
8
  users = {"admin": "password"} # 模擬用戶數據
9
 
 
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):
 
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, height=300)
66
 
67
  # 功能邏輯
68
  def handle_login(username, password):
 
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
 
91
 
92
  # 自定義CSS來優化小屏幕顯示
93
  custom_css = """
94
+ h1, h2, h3 {
95
  text-align: center;
96
  }
97
  @media (max-width: 768px) {
 
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)