AttributeError: 'NoneType'对象无'bind'属性 ttk.Combobox绑定事件报错咨询
报错原因
- 布局方法返回值问题:Tkinter中所有组件的
grid()、pack()、place()布局方法均无返回值,执行后默认返回None。你在创建Combobox时直接链式调用了grid()方法,将grid()的返回值赋值给了self.list1,导致self.list1实际为None,而非预期的Combobox实例对象,调用bind()方法时自然触发NoneType相关报错。 - 事件绑定参数错误:
bind()方法第二个参数需要传入函数对象本身,你写的list1_changed()加了括号,会在代码执行到这一行时立即调用该函数,最终绑定的是函数的返回值(此处为None),属于绑定逻辑错误。
修复方案
拆分组件创建与布局步骤,绑定事件时仅传入函数名即可,修复后的代码如下:
def frame_dbm(self): # NNo olvidar dar self.sentinel el valor False !!!!! Generar un FRame BASE para integrar el Label Frame def list1_changed(event): value=self.list1.get() print(value) self.LF2=LabelFrame(self.left_frame,bg="white", text="System's Data") self.LF2.grid(column=0,row=1,padx=2,pady=10) array=self.GI.view_table_log() self.n=StringVar() # 先创建Combobox实例赋值给变量,再单独调用布局方法 self.list1=ttk.Combobox(self.LF2,textvariable=self.n,values=array,state="readonly") self.list1.grid(pady=5, row=0, column=0, sticky=W) # 绑定事件只传函数名,不加括号 self.list1.bind("<<ComboboxSelected>>",list1_changed)
注:当前报错和你提供的SQLite读取模块无关,若后续出现下拉框无选项的问题,再排查数据库路径、表是否存在的问题即可。
内容的提问来源于stack exchange,提问作者Jonás Arbeláez Torres
相关产品推荐
相关产品推荐

