Tkinter treeview(0,0)位置存在多余空白 移除标题栏图标消失问题
问题根因
你遇到的问题核心来自两个错误配置:
- 额外定义了不需要的自定义列,还给自定义列配置了标题,额外占用了布局空间产生空白
- 对
ttk.Treeview的show参数逻辑不熟悉:传入空值会同时隐藏展示图标/树结构的默认树列和标题栏,自然图标会消失;传入'tree'仅展示树列、隐藏标题栏,才是符合你需求的配置。
解决方案
你不需要自定义列,直接用Treeview自带的默认#0树列承载图标即可,修改后的代码如下:
# 实现部分修改,移除多余的自定义列定义 icon_tree = ttk.Treeview(gridroot, selectmode='none', height=14, show='tree') # 直接调整默认#0树列的宽度、对齐属性匹配图标尺寸 icon_tree.column('#0', anchor=CENTER, width=20) # 不需要再配置自定义列的heading,show='tree'已经隐藏了标题栏 # 网格布局部分保持原有配置即可 Lb.grid(column=1, row=2) Lb.config(font=lb_font, selectmode=MULTIPLE, height=len(process_list)) Lb2.grid(column=2, row=2) Lb2.config(font=lb_font, selectmode=MULTIPLE, height=len(process_list)) icon_tree.grid(column=0, row=2) get_time_btn.grid(column=1, row=3) rm_from_list_btn.grid(column=2, row=3) refresh_list_btn.grid(column=1, row=4) add_monitor_btn.grid(column=2, row=4) # 图标添加逻辑不需要修改,保持原有代码即可 i = get_icon(exe) im = ImageTk.PhotoImage(i) icons.append(im) icon_tree.insert(parent='', index='end', image=icons[didx])
修改后Treeview仅会展示树列中的图标,不会再出现标题栏空白,图标位置也可以和旁边的列表框内容对齐。
内容的提问来源于stack exchange,提问作者Tippitytopkek
相关产品推荐
相关产品推荐

