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

求基于Python Kivy实现键值双向查询功能的代码示例

Kivy双向查询工具实现

本代码基于Python Kivy框架实现球队与队员的双向查询功能,完全匹配需求:

  1. 输入预设球队名(RCB/CSK/KKR/PBKS),输出对应全部队员列表
  2. 输入任意队员名,输出其所属的球队名称

依赖安装

运行前请先安装Kivy框架:
pip install kivy

完整可运行代码

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button

# 预设球队-队员映射关系
TEAM_PLAYER_MAP = {
    "RCB": ["Virat", "Abd", "Maxwell", "Chahal"],
    "CSK": ["Dhoni", "Raina", "Jadeja", "Faf"],
    "KKR": ["Morgan", "Russell", "Karthik", "Narine"],
    "PBKS": ["Rahul", "Mayank", "Shami", "Gayle"]
}

# 构建反向映射:队员->球队,统一转小写实现不区分大小写查询
PLAYER_TEAM_MAP = {}
for team, players in TEAM_PLAYER_MAP.items():
    for player in players:
        PLAYER_TEAM_MAP[player.lower()] = team
TEAM_LIST = [t.lower() for t in TEAM_PLAYER_MAP.keys()]

class QueryLayout(BoxLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.orientation = "vertical"
        self.padding = 20
        self.spacing = 15

        # 输入提示
        self.add_widget(Label(text="请输入球队名或队员名进行查询:", font_size=16))
        
        # 输入框
        self.input = TextInput(hint_text="输入查询内容", font_size=16, size_hint=(1, 0.2))
        self.add_widget(self.input)

        # 查询按钮
        self.query_btn = Button(text="查询", font_size=16, size_hint=(1, 0.2), background_color=(0.2, 0.6, 0.8, 1))
        self.query_btn.bind(on_press=self.do_query)
        self.add_widget(self.query_btn)

        # 结果显示
        self.result_label = Label(text="查询结果将在此处显示", font_size=16, size_hint=(1, 0.4))
        self.add_widget(self.result_label)

    def do_query(self, instance):
        query_content = self.input.text.strip().lower()
        if not query_content:
            self.result_label.text = "请输入有效查询内容"
            return
        
        # 先查是否是球队
        if query_content in TEAM_LIST:
            team = [t for t in TEAM_PLAYER_MAP.keys() if t.lower() == query_content][0]
            players = "、".join(TEAM_PLAYER_MAP[team])
            self.result_label.text = f"球队[{team}]的队员列表:\n{players}"
            return
        
        # 再查是否是队员
        if query_content in PLAYER_TEAM_MAP:
            team = PLAYER_TEAM_MAP[query_content]
            # 还原队员名的正确大小写
            player = [p for p in TEAM_PLAYER_MAP[team] if p.lower() == query_content][0]
            self.result_label.text = f"队员[{player}]所属球队:\n{team}"
            return
        
        # 都没查到
        self.result_label.text = "未查询到匹配结果,请检查输入内容"

class QueryApp(App):
    def build(self):
        self.title = "球队队员双向查询工具"
        return QueryLayout()

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

使用说明

  • 启动程序后在输入框输入内容,点击查询即可得到结果
  • 查询不区分大小写,输入virat、Virat、VIRAT均可正常识别
  • 输入不存在的球队或队员名会提示未匹配到结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:48:03