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

如何用Python Tkinter获取所有输入框内容并存入列表?

问题与解决方案

我的目标是点击Solve按钮时,将所有输入框的内容生成一个列表。我尝试获取用户输入,但使用focus_set()时每次只能聚焦一个输入框。请问是否可以聚焦所有输入框?如果不行,如何在点击一次按钮时逐个获取每个输入框的内容并存入列表?


核心结论

无法同时聚焦多个输入框,GUI框架(包括tkinter)同一时间仅允许单个控件获得输入焦点,focus_set()每次只能作用于一个输入框,这是正常的设计逻辑。

解决方案:保存输入框引用并批量获取内容

要实现点击按钮一次性收集所有输入框内容,只需在创建输入框时保存每个输入框的对象引用,点击按钮时遍历这些引用逐个获取内容即可。

修改后的完整代码:

import tkinter as tk

# 创建窗口
root = tk.Tk()
root.geometry("780x400")

# 创建框架
frame = tk.Frame(root)

# 配置列权重
frame.columnconfigure(0, weight=4)
for i in range(9):
    frame.columnconfigure(i+1, weight=1)
frame.columnconfigure(10, weight=4)

# 创建标题
title = tk.Label(root, text="Sudoku Solver", height=3, font=("Arial",14))
title.pack()

# 创建输入框的函数
def createBox(rowID, columnID, Xpad1, Xpad2, Ypad1, Ypad2):
    box1 = tk.Entry(frame, width=2)
    box1.grid(row=rowID, column=columnID, padx=(Xpad1,Xpad2), pady=(Ypad1,Ypad2))
    return box1

# 存储所有输入框的列表
entries = []

# 点击按钮时执行的函数
def enter():
    # 遍历所有输入框,收集内容到列表(strip()去除多余空格)
    sudoku_values = [entry.get().strip() for entry in entries]
    # 可在此添加后续处理逻辑,比如打印或传入数独求解算法
    print(sudoku_values)

# 循环创建81个输入框
Xpad1 = 0
Xpad2 = 0
Ypad1 = 0
Ypad2 = 0
for i in range(9):
    for j in range(9):
        # 设置网格间隔,模拟数独区块分隔
        if i == 3:
            Xpad1 = 5
        elif i == 5:
            Xpad2 = 5
        if j == 3:
            Ypad1 = 5
        elif j == 5:
            Ypad2 = 5
        # 创建输入框并添加到列表
        entry = createBox(j, i, Xpad1, Xpad2, Ypad1, Ypad2)
        entries.append(entry)
        # 重置间隔参数
        Xpad1 = 0
        Xpad2 = 0
        Ypad1 = 0
        Ypad2 = 0

# 创建求解按钮
solveButton = tk.Button(root, text="Solve", command=enter)
solveButton.pack()

# 打包框架
frame.pack()
root.mainloop()

关键修改说明

  • 新增entries列表:替代原代码中单个Test变量,统一存储所有输入框对象的引用
  • 重构enter函数:通过列表推导式遍历entries,批量获取每个输入框的内容
  • 移除无用的focus_set():该操作对批量获取内容无帮助,且无法实现多控件聚焦

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:55:00