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

CustomTkinter Entry组件get方法调用报错AttributeError求助

问题解决:CustomTkinter获取Entry内容时的AttributeError错误

错误原因分析

你的代码存在两个核心问题:

  1. get_db方法定义在了__init__函数内部,属于局部函数,并非App类的成员方法,因此类实例无法调用它,导致AttributeError。
  2. entry_db是__init__内的局部变量,没有用self.声明为类实例属性,get_db方法无法通过self.entry_db访问到这个输入框。

修正后的代码

import customtkinter

# 假设DPadY和DPadX是你定义的常量,这里给出示例值
DPadY = 10
DPadX = 10

class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()

        self.geometry("500x300")
        self.title("Psychrometrics")
        customtkinter.set_appearance_mode("system")
        customtkinter.set_default_color_theme("green")

        label_title = customtkinter.CTkLabel(self, text="Saturation Pressure")
        label_title.grid(row=0, column=0, pady=DPadY, padx=DPadX)

        # 用self.声明为实例属性,让类内其他方法可访问
        self.entry_db = customtkinter.CTkEntry(self, placeholder_text="Dry Bulb")
        self.entry_db.grid(row=1, column=0, pady=DPadY, padx=DPadX)

        label_dbsp = customtkinter.CTkEntry(self, width=300, placeholder_text="Dry Bulb Saturation Pressure")
        label_dbsp.grid(row=1, column=1, pady=DPadY, padx=DPadX)

        self.entry_wb = customtkinter.CTkEntry(self, placeholder_text="Wet Bulb")
        self.entry_wb.grid(row=2, column=0, pady=DPadY, padx=DPadX)

        label_wbsp = customtkinter.CTkEntry(self, width=300, placeholder_text="Wet Bulb Saturation Pressure")
        label_wbsp.grid(row=2, column=1, pady=DPadY, padx=DPadX)

        # 将按钮命令绑定为类内方法,避免全局函数耦合
        button = customtkinter.CTkButton(self, text="Calculate", command=self.login)
        button.grid(row=3, column=0, pady=DPadY, padx=DPadX)

    # 将get_db定义为类的成员方法,移出__init__
    def get_db(self):
        _Db = self.entry_db.get()
        return _Db

    # 将login改为类内方法,直接调用get_db
    def login(self):
        Cdb = self.get_db()
        print(Cdb)

app = App()
app.mainloop()

关键修改点

  • 将get_db方法移到__init__外部,作为App类的成员方法。
  • 给entry_db添加self.前缀,使其成为类实例属性,确保get_db能访问到输入框。
  • 将按钮的command绑定为类内的self.login方法,避免全局函数依赖全局变量app,代码结构更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:12:54