求基于Python Kivy实现键值双向查询功能的代码示例
Kivy双向查询工具实现
本代码基于Python Kivy框架实现球队与队员的双向查询功能,完全匹配需求:
- 输入预设球队名(RCB/CSK/KKR/PBKS),输出对应全部队员列表
- 输入任意队员名,输出其所属的球队名称
依赖安装
运行前请先安装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
相关产品推荐
相关产品推荐

