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

如何在Tkinter中获取定义在类内部的Entry控件的输入文本

Tkinter Entry控件跨作用域读取输入内容解决方案

原代码核心问题

  • 函数定义顺序错误:get_value 函数定义在 obj.buttons 初始化之后,Button绑定command时找不到对应函数
  • 变量未定义错误:get_value 中调用的 entry 变量不存在,全局作用域没有声明过名为entry的Entry控件实例
  • 取值方法错误:绑定textvariable后直接读StringVar的.get()方法即可,不需要额外调用Entry控件的取值方法

修复后可运行代码

from tkinter import *

class main:
    def __init__(self, master):
        self.master = master
    def entry(self, entry_widget, width, text):
        self.width = width
        self.text = text
        self.entry_widget = Entry(self.master, width = self.width, textvariable = self.text)
        self.entry_widget.pack()
    def buttons(self, button_widget, width, height, text):
        self.width = width
        self.height = height
        self.text = text
        self.button_widget = Button(self.master, width = self.width, height = self.height, text = self.text, command = get_value)
        self.button_widget.pack()

# 调整函数定义顺序,保证绑定时可以找到
def get_value():
    # 直接读取绑定的StringVar的值
    input_content = my_text.get()
    print(input_content)

root = Tk()
my_text = StringVar()
obj = main(root)
obj.entry("field", 60, my_text)
obj.buttons("my_button", 30,2,"click") # 原高度20过大,调整为2符合常规使用习惯

root.mainloop()

其他场景取值方案

无绑定textvariable时取值

如果没有给Entry控件绑定StringVar,可以直接从类实例中取Entry控件对象调用.get()方法:

def get_value():
    input_content = obj.entry_widget.get()
    print(input_content)

跨文件取值

如果需要在其他文件的函数中读取Entry内容,只需要把类实例obj或者绑定的my_text变量导入到目标文件即可,注意规避循环导入问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:30:04