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

如何在Tkinter中向其他文件传递整数输入?报错解决

问题原因

你碰到的NameError: name 'a' is not defined是因为function.py里直接用了home.py中定义的a、b输入框组件,但这俩变量只在home.py的作用域里生效,function.py根本找不到它们。

解决办法

最规范的方式是把计算逻辑封装成带参数的函数,通过传参把输入值递过去,具体改法如下:

第一步:修改function.py

把计算逻辑写成接受两个整数参数的函数:

from math import pi

def get_volume(t1, t2):
    return (1/3) * pi * t1 * t1 * t2

第二步:修改home.py

在home.py里获取输入框的值,然后调用上面的函数:

from tkinter import Tk, Entry, Button
from function import get_volume

win = Tk()

# 你的输入框代码不变
a = Entry(win, width=21)
a.place(x=200, y=155)
b = Entry(win, width=22)
b.place(x=375, y=155)

# 写一个触发计算的函数
def calculate():
    try:
        # 从输入框取转成整数的值
        num1 = int(a.get())
        num2 = int(b.get())
        # 调用计算函数
        result = get_volume(num1, num2)
        print(f"计算结果:{result}")
    except ValueError:
        print("请输入合法的整数!")

# 加个按钮触发计算(你也可以用其他方式触发,比如回车)
calc_btn = Button(win, text="计算", command=calculate)
calc_btn.place(x=200, y=200)

win.mainloop()

另一种不推荐的写法(耦合性高)

如果非要在function.py里直接用输入框对象,可以把它们作为参数传给函数,但这种方式会让两个文件耦合度太高,后期不好维护:

修改function.py

from math import pi

def calculate_from_entries(entry_a, entry_b):
    t1 = int(entry_a.get())
    t2 = int(entry_b.get())
    return (1/3) * pi * t1 * t1 * t2

修改home.py里的计算函数

def calculate():
    try:
        result = calculate_from_entries(a, b)
        print(f"计算结果:{result}")
    except ValueError:
        print("请输入合法的整数!")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:35:44