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

Python for循环中如何使用动态变量名操作tkinter输入框

Tkinter 循环批量获取Entry值分组计算方案

问题说明

你在使用tkinter开发GUI时,已定义8个Entry输入框对象,变量名如下:

b1_entry
b2_entry
b3_entry
b4_entry 

c1_entry 
c2_entry 
c3_entry
c4_entry

需要按序号匹配b组和c组输入框取值计算,结果分别对应f1~f4四个变量,供后续组件展示。你尝试通过字符串拼接动态生成变量名的写法存在语法错误,原错误示例如下:

# 错误写法,无法直接执行
for i in range (2, 5):
    f + str('i') = 'b' + str(i).get() + 'c' + str(i).get()

注:原代码range(2,5)仅会遍历2、3、4三个序号,会漏掉i=1的分组,若要覆盖1~4全部分组,范围需写为range(1,5)。

实现代码

推荐方案:字典存储结果(可维护性最高)

不建议动态生成零散的独立变量,用字典统一存储结果更方便后续遍历、更新,避免命名冲突:

# 批量取值计算逻辑
f = {}
for i in range(1, 5):
    # 动态获取对应序号的Entry对象
    b_entry = globals()[f"b{i}_entry"]
    c_entry = globals()[f"c{i}_entry"]
    # 取值后替换为你实际需要的计算逻辑,示例为字符串拼接,数值计算可转int/float后运算
    f[i] = b_entry.get() + c_entry.get()

# 调用方式:f[1]对应原需求的f1,f[2]对应f2,以此类推
# 示例:给其他展示组件插入值
# show_entry1.insert(0, f[1])

类内封装场景适配

如果你的GUI代码是封装在类中的,不要用globals()获取对象,改用getattr获取实例属性即可:

class TkinterApp:
    def calc_group_value(self):
        self.f = {}
        for i in range(1, 5):
            b_entry = getattr(self, f"b{i}_entry")
            c_entry = getattr(self, f"c{i}_entry")
            self.f[i] = b_entry.get() + c_entry.get()

兼容方案:强制生成f1~f4独立变量(不推荐)

如果你因为历史代码逻辑必须要生成f1、f2这类独立命名的变量,可以通过全局变量字典动态赋值:

for i in range(1, 5):
    b_val = globals()[f"b{i}_entry"].get()
    c_val = globals()[f"c{i}_entry"].get()
    globals()[f"f{i}"] = b_val + c_val

# 执行后可直接调用f1、f2、f3、f4变量

内容的提问来源于stack exchange,提问作者Muhammad Farzan Bashir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 18:25:25