Tkinter绑定函数移入类后报错entry未定义问题求解
错误原因
- 缩进逻辑完全错误:
entering方法没有缩进进Methods1类内部,不属于类的成员方法;entry1.delete(0, END)代码位置错误,运行时entry1还未创建就会被调用,直接触发未定义报错 - 执行顺序错误:类实例化操作放在了UI组件(输入框
entry1、文本标签label1)创建之前,类方法访问全局组件时组件还不存在 - 变量逻辑混乱:类变量
i和全局变量i混用,后续计数逻辑会出现异常
修复方案
调整代码缩进和执行顺序,将类方法缩进至类内部,清空输入框的代码移入entering方法内,先创建所有UI组件再实例化类即可正常运行。
可运行完整代码
import tkinter from tkinter import * root = tkinter.Tk() root.wm_title("speed entering calculator") class Methods1: i = 0 # 回车触发的计数方法 def entering(self, a): try: # 读取输入框内容转整数 value1 = int(entry1.get()) value1 = self.i + value1 label1['text'] = value1 self.i = value1 # 清空输入框 entry1.delete(0, END) except ValueError as ve: print('仅支持输入整数') # 创建画布 canvas1 = tkinter.Canvas(root, height=400, width=400, bg="black") canvas1.pack() # 创建输入框 entry1 = tkinter.Entry(root, justify="center") canvas1.create_window(200, 140, height=100, width=100, window=entry1) # 创建显示结果的标签 value = "数值将显示在这里" label1 = Label(root, text=value, height=10) label1.pack() # UI组件全部创建完成后再实例化类 ob = Methods1() # 绑定回车键触发计数 root.bind('<Return>', ob.entering) root.mainloop()
内容的提问来源于stack exchange,提问作者dead day
相关产品推荐
相关产品推荐

