Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -4,9 +4,6 @@ import pandas as pd
|
|
| 4 |
import json
|
| 5 |
import os
|
| 6 |
|
| 7 |
-
# 模擬用戶數據
|
| 8 |
-
users = {"admin": "password"}
|
| 9 |
-
|
| 10 |
# 數據存儲文件
|
| 11 |
data_file = "dog_activity_data.json"
|
| 12 |
|
|
@@ -59,70 +56,58 @@ def delete_activity(row_index):
|
|
| 59 |
except ValueError:
|
| 60 |
return "錯誤: 請輸入有效的數字行號", update_activity_display()
|
| 61 |
|
| 62 |
-
# 登錄功能
|
| 63 |
-
def login(username, password):
|
| 64 |
-
if username in users and users[username] == password:
|
| 65 |
-
return gr.update(visible=False), gr.update(visible=True), "登錄成功"
|
| 66 |
-
else:
|
| 67 |
-
return gr.update(visible=True), gr.update(visible=False), "用戶名或密碼錯誤"
|
| 68 |
-
|
| 69 |
# 主界面
|
| 70 |
def main_interface():
|
| 71 |
init_data_file()
|
| 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 |
-
delete_msg = gr.Textbox(label="刪除狀態", interactive=False)
|
| 115 |
-
|
| 116 |
-
# 登錄邏輯
|
| 117 |
-
login_btn.click(
|
| 118 |
-
login,
|
| 119 |
-
inputs=[username, password],
|
| 120 |
-
outputs=[login_section, main_section, login_msg]
|
| 121 |
-
)
|
| 122 |
|
| 123 |
# 綁定活動按鈕邏輯
|
| 124 |
-
|
| 125 |
-
|
|
|
|
|
|
|
|
|
|
| 126 |
|
| 127 |
# 綁定顯示更多邏輯
|
| 128 |
show_more_btn.click(
|
|
|
|
| 4 |
import json
|
| 5 |
import os
|
| 6 |
|
|
|
|
|
|
|
|
|
|
| 7 |
# 數據存儲文件
|
| 8 |
data_file = "dog_activity_data.json"
|
| 9 |
|
|
|
|
| 56 |
except ValueError:
|
| 57 |
return "錯誤: 請輸入有效的數字行號", update_activity_display()
|
| 58 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
# 主界面
|
| 60 |
def main_interface():
|
| 61 |
init_data_file()
|
| 62 |
+
custom_css = """
|
| 63 |
+
.custom-btn {
|
| 64 |
+
width: 100%;
|
| 65 |
+
padding: 10px;
|
| 66 |
+
margin: 5px 0;
|
| 67 |
+
color: white;
|
| 68 |
+
border: none;
|
| 69 |
+
font-size: 16px;
|
| 70 |
+
text-align: center;
|
| 71 |
+
cursor: pointer;
|
| 72 |
+
border-radius: 5px;
|
| 73 |
+
}
|
| 74 |
+
.btn-poop { background-color: #FF6347; } /* Tomato */
|
| 75 |
+
.btn-pee { background-color: #4682B4; } /* SteelBlue */
|
| 76 |
+
.btn-eat { background-color: #32CD32; } /* LimeGreen */
|
| 77 |
+
.btn-half { background-color: #FFD700; } /* Gold */
|
| 78 |
+
.btn-no-eat { background-color: #D3D3D3; } /* LightGray */
|
| 79 |
+
"""
|
| 80 |
+
with gr.Blocks(css=custom_css) as app:
|
| 81 |
+
gr.Markdown("## 🐾 狗狗活動記錄器")
|
| 82 |
+
|
| 83 |
+
# 記錄活動按鈕 (不同顏色 + icon)
|
| 84 |
+
with gr.Row():
|
| 85 |
+
poop_btn = gr.Button("💩 拉屎", elem_classes="custom-btn btn-poop")
|
| 86 |
+
pee_btn = gr.Button("💦 尿尿", elem_classes="custom-btn btn-pee")
|
| 87 |
+
eat_btn = gr.Button("🍽️ 全吃了", elem_classes="custom-btn btn-eat")
|
| 88 |
+
half_eat_btn = gr.Button("🍛 吃了一半", elem_classes="custom-btn btn-half")
|
| 89 |
+
no_eat_btn = gr.Button("🥄 沒怎麼吃", elem_classes="custom-btn btn-no-eat")
|
| 90 |
+
|
| 91 |
+
# 活動記錄表格
|
| 92 |
+
gr.Markdown("### 📊 最近活動記錄 (僅顯示最近5條)")
|
| 93 |
+
data_table = gr.Dataframe(update_activity_display(), interactive=False)
|
| 94 |
+
|
| 95 |
+
# 顯示更多按鈕
|
| 96 |
+
show_more_btn = gr.Button("顯示更多記錄")
|
| 97 |
+
show_less_btn = gr.Button("顯示最近5條", visible=False)
|
| 98 |
+
|
| 99 |
+
# 刪除記錄功能
|
| 100 |
+
gr.Markdown("### 🗑️ 刪除記錄")
|
| 101 |
+
row_to_delete = gr.Textbox(label="輸入要刪除的行號 (從 0 開始)")
|
| 102 |
+
delete_btn = gr.Button("刪除記錄")
|
| 103 |
+
delete_msg = gr.Textbox(label="刪除狀態", interactive=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
|
| 105 |
# 綁定活動按鈕邏輯
|
| 106 |
+
poop_btn.click(lambda: save_activity("拉屎"), outputs=[data_table])
|
| 107 |
+
pee_btn.click(lambda: save_activity("尿尿"), outputs=[data_table])
|
| 108 |
+
eat_btn.click(lambda: save_activity("全吃了"), outputs=[data_table])
|
| 109 |
+
half_eat_btn.click(lambda: save_activity("吃了一半"), outputs=[data_table])
|
| 110 |
+
no_eat_btn.click(lambda: save_activity("沒怎麼吃"), outputs=[data_table])
|
| 111 |
|
| 112 |
# 綁定顯示更多邏輯
|
| 113 |
show_more_btn.click(
|