You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python把TeamUp API返回的title、start_dt、end_dt赋值给变量

提取TeamUp API事件字段并用于Kivy展示

步骤1:解析API返回的JSON数据

先把http.client获取到的响应内容转换成Python可操作的列表/字典,用json.loads()处理:

import http.client
import json

# 完成API调用并获取响应
conn = http.client.HTTPSConnection("api.teamup.com")
conn.request("GET", "/your-calendar-id/events", headers={"Teamup-Token": "your-api-token"})
res = conn.getresponse()
data = res.read()
# 解析JSON为Python事件列表
events_list = json.loads(data)

步骤2:提取目标字段到变量

遍历事件列表,把每个事件的title、start_dt、end_dt提取出来,存成字典列表,方便后续Kivy调用:

processed_events = []
for event in events_list:
    # 用get()避免字段缺失时抛出异常
    event_info = {
        "title": event.get("title"),
        "start_dt": event.get("start_dt"),
        "end_dt": event.get("end_dt")
    }
    processed_events.append(event_info)

步骤3:在Kivy中展示日程列表

用Kivy的RecycleView实现列表展示(适合多数据场景),示例代码如下:

Python代码

from kivy.app import App
from kivy.uix.recycleview import RecycleView
from kivy.uix.recycleview.views import RecycleDataViewBehavior
from kivy.uix.label import Label
from kivy.properties import StringProperty

class EventItem(RecycleDataViewBehavior, Label):
    title = StringProperty("")
    start_dt = StringProperty("")
    end_dt = StringProperty("")

    def refresh_view_attrs(self, rv, index, data):
        self.title = data["title"]
        self.start_dt = data["start_dt"]
        self.end_dt = data["end_dt"]
        return super().refresh_view_attrs(rv, index, data)

class EventRecycleView(RecycleView):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.data = processed_events

class CalendarApp(App):
    def build(self):
        return EventRecycleView()

if __name__ == "__main__":
    CalendarApp().run()

对应KV文件(命名为calendar.kv)

<EventItem>:
    text: f"{self.title}\n开始: {self.start_dt}\n结束: {self.end_dt}"
    size_hint_y: None
    height: 80
    padding: 10
    color: 0,0,0,1

<EventRecycleView>:
    viewclass: 'EventItem'
    RecycleBoxLayout:
        default_size: None, dp(80)
        default_size_hint: 1, None
        size_hint_y: None
        height: self.minimum_height
        orientation: 'vertical'

额外提示

  • 若需要格式化日期时间,可用datetime模块处理API返回的start_dt/end_dt:
from datetime import datetime
formatted_start = datetime.fromisoformat(event["start_dt"]).strftime("%Y-%m-%d %H:%M")
  • 第三方包用不了就直接用原生库调用API,没必要强行依赖,requests库比http.client更简洁,也可以尝试替换。

内容的提问来源于stack exchange,提问作者VinceT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 06:30:17