OOP模式下Tkinter Entry组件无法正常获取输入值问题
Tkinter Entry无法捕获输入值的解决办法
问题根源
你遇到的空值问题,大概率是email这个StringVar被Python垃圾回收机制清掉了。如果它是类方法里的局部变量,方法执行完后这个变量就失去了引用,Tkinter没法再通过它绑定Entry的输入内容。
两种解决方法
方法1:把StringVar改成类的实例属性
将email定义为类的实例变量,让它和类实例绑定,避免被轻易回收:
# 在类方法内修改成这样 self.email = tk.StringVar() self.nameent = tk.Entry(registerwindow, textvariable=self.email, font=('Arial',14,'normal')) # 获取值时用 email_value = self.email.get()
方法2:直接用Entry的get()方法取值
跳过StringVar,直接操作Entry组件本身,简单直接且不会有回收问题:
# 定义Entry时去掉textvariable参数 self.nameent = tk.Entry(registerwindow, font=('Arial',14,'normal')) # 需要取值时直接调用组件的get()方法 email_value = self.nameent.get()
额外排查点
别忘了确认Entry组件已经通过pack()、grid()或者place()方法布局到窗口上,要是没布局,组件根本不会显示,自然也没法输入内容。
内容的提问来源于stack exchange,提问作者Charlotte Watson
相关产品推荐
相关产品推荐

