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

Python Tkinter:不依赖条目标签名或get()方法如何获取输入值?

解决Tkinter Entry矩阵数据提取问题

问题分析

原代码存在几个核心问题导致无法提取Entry矩阵数据:

  • 未将创建的Entry对象存储到matrix列表中,仅用单个变量matrixInput覆盖,最终只能访问最后一个Entry
  • input是number函数的局部变量,storeMatrix函数无法直接访问
  • storeMatrix未按矩阵结构组织数据,且错误使用了仅指向最后一个Entry的变量

修正后的代码

from tkinter import *

# 初始化空矩阵,用于存储Entry对象
matrix = []

def number():
    try:
        # 获取用户输入并转为整数
        size = int(E1.get())
        # 清空之前的矩阵(如果有)
        global matrix
        matrix = []
        # 创建Entry矩阵并存储到matrix中
        for x in range(size):
            row = []
            for y in range(size):
                entry = Entry(root, bg="white")
                entry.grid(row=10+x, column=1+y, padx=5, pady=5)
                row.append(entry)
            matrix.append(row)
        
        # 创建提交按钮
        B2 = Button(root, text="Submit", font=40, command=storeMatrix)
        B2.grid(row=20, column=1)
        
        L2.config(text="")  # 清空错误提示
    except ValueError:
        L2.config(text="请输入有效数字")

def storeMatrix():
    # 提取矩阵中所有Entry的输入值
    result_matrix = []
    for row in matrix:
        current_row = []
        for entry in row:
            current_row.append(entry.get())
        result_matrix.append(current_row)
    
    # 这里可以添加处理结果的逻辑,比如打印或展示
    print("提取到的矩阵数据:")
    for row in result_matrix:
        print(row)

root = Tk()
L1 = Label(root, text="输入人数", font=40)
L1.grid(row=0, column=0)

E1 = Entry(root, bg="white")
E1.grid(row=0, column=1)

L2 = Label(root, text='')
L2.grid(row=3, column=1)

B1 = Button(root, text="生成矩阵", font=40, command=number)
B1.grid(row=2, column=1)

root.mainloop()

关键改动说明

  • 将matrix设为全局变量,在number函数中重新初始化并逐行存储Entry对象,确保每个输入框都被记录
  • 把原input变量重命名为size,避免与Python内置函数冲突,同时通过遍历matrix的方式获取矩阵结构,无需额外传递尺寸参数
  • storeMatrix函数通过遍历matrix中的每个Entry对象调用get()方法,正确提取所有输入值并按二维矩阵结构组织
  • 优化错误提示逻辑,正确输入时清空之前的错误提示

输入界面示意图:
输入界面示意图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:23:10