Tkinter同一窗口创建2个Treeview报Invalid column index PID错误
报错根因
报错和IDE是否能区分控件无关,是编写第二个Treeview(self.treer)的列配置逻辑时出现笔误:
你遍历的是self.treer的列定义(其中包含PID列),但调用列配置、表头配置方法时,操作的是第一个Treeview实例self.tree,而self.tree从未定义过PID列,因此触发Invalid column index PID错误。
对应出错的原代码段:
for i,j in zip(self.treer['columns'],self.headingsr): # 这里错误使用了self.tree而非self.treer作为操作对象 self.tree.column(i,anchor= CENTER,width= 150, minwidth= 150) self.tree.heading(i,text = j, anchor = CENTER)
另外代码还存在一处功能缺陷:第二个Treeview绑定的滚动条self.yscrollr未完成关联配置,运行时无法正常滚动。
修复步骤
- 修正第二个Treeview列配置循环的操作对象,将循环内的
self.tree替换为self.treer,修正后代码:
for i,j in zip(self.treer['columns'],self.headingsr): self.treer.column(i,anchor= CENTER,width= 150, minwidth= 150) self.treer.heading(i,text = j, anchor = CENTER)
- 补充第二个滚动条的关联与布局配置,放在原有滚动条配置代码旁即可:
# 原有第一个Treeview的滚动条绑定 self.scroll.config(command = self.tree.yview) # 新增第二个Treeview的滚动条绑定 self.yscrollr.config(command = self.treer.yview) self.yscrollr.pack(side = RIGHT, fill = Y)
修改完成后即可正常运行,两个Treeview控件互不干扰,滚动功能也可正常使用。
内容的提问来源于stack exchange,提问作者Abdullah Kaya
相关产品推荐
相关产品推荐

