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

Python Tkinter GUI编程BMI计算器报module对象不可调用问题咨询

问题原因

你代码的核心错误是对Tkinter的基础用法理解有误:

  • import tkinter as tk里的tk是导入的模块对象,不是可调用的函数,你多处写tk(xxx)尝试调用模块,自然会报TypeError: 'module' object is not callable的错误
  • 你当前的代码逻辑还是命令行输入输出的逻辑,没有用到Tkinter的GUI组件,就算修复调用错误也无法生成图形界面
  • 最后写的m.mainloop()里的m变量没有预先定义,运行到这一步也会触发报错
正确实现带GUI的BMI计算器代码
import tkinter as tk
from tkinter import ttk

def calculate_bmi():
    try:
        # 读取用户输入的体重身高
        weight = float(weight_entry.get())
        height = float(height_entry.get())
        # 计算BMI值保留两位小数
        bmi = round(weight / (height / 100) ** 2, 2)
        # 判断体重等级
        if bmi <= 17.5:
            status = "严重偏瘦"
        elif bmi <= 18.5:
            status = "偏瘦"
        elif bmi <= 25:
            status = "正常体重"
        elif bmi <= 30:
            status = "超重"
        elif bmi <= 40:
            status = "肥胖"
        else:
            status = "严重肥胖"
        # 输出结果到GUI界面
        result_label.config(text=f"BMI值: {bmi}\n体重状态: {status}")
    except ValueError:
        result_label.config(text="请输入有效的数字!")

# 初始化GUI主窗口
root = tk.Tk()
root.title("BMI计算器")
root.geometry("300x250")

# 生成各类GUI组件
ttk.Label(root, text="体重(kg):").pack(pady=5)
weight_entry = ttk.Entry(root)
weight_entry.pack(pady=2)

ttk.Label(root, text="身高(cm):").pack(pady=5)
height_entry = ttk.Entry(root)
height_entry.pack(pady=2)

calc_btn = ttk.Button(root, text="计算BMI", command=calculate_bmi)
calc_btn.pack(pady=10)

result_label = ttk.Label(root, text="")
result_label.pack(pady=10)

# 启动GUI事件循环
root.mainloop()
代码说明
  • 首先创建Tkinter主窗口对象root,所有GUI组件都挂载在这个窗口上
  • 用Entry组件接收用户输入的体重和身高,替换命令行的input()
  • 将计算按钮的点击事件绑定到calculate_bmi函数,点击时自动完成读取输入、计算、结果更新的全流程
  • 用Label组件展示计算结果和体重状态,替换命令行的print()
  • 最后调用root.mainloop()启动GUI事件循环,保持窗口持续显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:36:03