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

Python Tkinter中字典.get()无法获取按钮对象问题求助

问题分析与解决

核心原因

你完全搞反了dict.get()的参数逻辑:

  • dict[key]是通过键(比如"a1")获取对应的值(按钮对象),这是正确的用法
  • dict.get(x)要求x必须是字典的键,但你传入的是字典的值(按钮对象),而你的字典根本没有以按钮对象为键的条目,所以自然返回None(get()的默认返回值)

正确用法示例

1. 通过棋盘格名称获取按钮(你的原始需求)

直接用键取值即可,没必要绕get():

button = chess_board_dict["a1"]

如果担心键不存在报错,用get()时还是要传键:

button = chess_board_dict.get("a1")  # 键不存在时返回None
button = chess_board_dict.get("a1", default_button)  # 可指定键不存在时的默认值

2. 通过按钮对象反向找棋盘格名称(如果有这个需求)

字典默认是键到值的单向映射,要反向查询得自己遍历键值对:

def find_position_by_button(button, board_dict):
    for pos, btn in board_dict.items():
        if btn is button:  # 用is判断对象同一性更准确
            return pos
    return None  # 没找到对应按钮时返回None

# 调用示例
current_btn = chess_board_dict["a1"]
pos = find_position_by_button(current_btn, chess_board_dict)
print(pos)  # 输出 "a1"

补充说明

Tkinter的按钮对象(比如.!button1)是内存中的实例对象,你的字典键都是字符串类型("a1"这类),所以拿按钮对象当键去查询,字典里根本没有对应的条目,肯定拿不到结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:32:48