Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import json | |
| import os | |
| from datetime import datetime | |
| # 定义JSON文件路径 | |
| JSON_FILE = "1.json" | |
| # 初始化JSON文件 | |
| def initialize_json(): | |
| if not os.path.exists(JSON_FILE): | |
| with open(JSON_FILE, 'w') as f: | |
| json.dump([], f) | |
| # 读取JSON文件 | |
| def read_json(): | |
| with open(JSON_FILE, 'r') as f: | |
| data = json.load(f) | |
| return data | |
| # 写入JSON文件 | |
| def write_json(data): | |
| with open(JSON_FILE, 'w') as f: | |
| json.dump(data, f, indent=4) | |
| # 记录事件 | |
| def record_event(event_type): | |
| data = read_json() | |
| timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") | |
| data.append({"timestamp": timestamp, "event": event_type}) | |
| write_json(data) | |
| return data | |
| # 删除记录 | |
| def delete_record(index): | |
| data = read_json() | |
| if 0 <= index < len(data): | |
| data.pop(index) | |
| write_json(data) | |
| return data | |
| # 显示记录 | |
| def display_records(): | |
| data = read_json() | |
| return "\n".join([f"{i}: {item['timestamp']} - {item['event']}" for i, item in enumerate(data)]) | |
| # Gradio界面 | |
| def main(): | |
| initialize_json() | |
| with gr.Blocks() as demo: | |
| gr.Markdown("## 狗狗日常记录") | |
| with gr.Row(): | |
| poop_btn = gr.Button("拉屎", variant="primary") | |
| pee_btn = gr.Button("尿尿", variant="secondary") | |
| eat_all_btn = gr.Button("全吃了", variant="success") | |
| eat_half_btn = gr.Button("吃了一半", variant="warning") | |
| eat_none_btn = gr.Button("没吃", variant="danger") | |
| output = gr.Textbox(label="记录", interactive=False) | |
| delete_index = gr.Number(label="删除记录的索引", precision=0) | |
| delete_btn = gr.Button("删除记录") | |
| poop_btn.click(lambda: record_event("拉屎"), None, output, queue=False) | |
| pee_btn.click(lambda: record_event("尿尿"), None, output, queue=False) | |
| eat_all_btn.click(lambda: record_event("全吃了"), None, output, queue=False) | |
| eat_half_btn.click(lambda: record_event("吃了一半"), None, output, queue=False) | |
| eat_none_btn.click(lambda: record_event("没吃"), None, output, queue=False) | |
| delete_btn.click(lambda idx: delete_record(int(idx)), delete_index, output, queue=False) | |
| output.update(display_records()) | |
| demo.launch() | |
| if __name__ == "__main__": | |
| main() | |