【问题标题】:How to remove indent left on the widget Tkinter Treeview?如何删除小部件 Tkinter Treeview 上的缩进?
【发布时间】:2018-01-20 15:55:57
【问题描述】:

我能以某种方式移除这个缩进吗?我知道我可以删除第一列,但是我不能插入图像。

import tkinter as tk
import tkinter.ttk as ttk
from PIL import Image, ImageTk

class App:
    def __init__(self, master):
        self.tree = ttk.Treeview(master)
        self.tree.heading('#0', text='Directory', anchor='w')
        self.tree["columns"]=("num_files")
        self.tree.heading('num_files', text='Number of files', anchor='w')

        self.image_tk = ImageTk.PhotoImage(Image.open('icon.png'))

        for i in range(10):
            self.tree.insert('', 'end', text="Dir %d" % (i+1), values=(15), open=False, image=self.image_tk)
        self.tree.pack(expand=1,fill="both")

root = tk.Tk()
app = App(root)
root.mainloop()

【问题讨论】:

  • 请提供minimal reproducible example。与图像相关的部分似乎是多余的。
  • @Nae 我描述了这个问题。附上截图。添加了完整的程序代码。还需要什么?
  • 当然,它几乎是完美的,但是缩进没有所需的图像in代码,这使得代码有点不简约。或者如果没有缩进,没有 icon.png,那么请强调这一点。
  • @Nae 作为图像,您可以拍摄任何照片。要执行我的任务,需要图标。另外,不用图标我也知道问题的解决方法。
  • 我认为届时提供这些信息也会有所帮助。

标签: python tkinter treeview


【解决方案1】:

假设您所指的缩进是第一列的左侧(所有图标的左侧),您可以根据需要调整整个小部件的填充。对于您的应用程序,请从以下内容开始:

self.tree = ttk.Treeview(master, padding=[-15,0,0,0])

【讨论】:

  • 当然,这不是最好的解决方案,但还是谢谢!
【解决方案2】:

您以红色突出显示的是 Treeview 指示器所在的区域 - openclose 切换图标 - 如果有任何 @ 987654321@ 对象包含自己的子项

完成删除该区域的一种方法是完全删除指示器,同时使用允许您这样做的 ttk 主题。

s = ttk.Style()
s.theme_use('default')
s.configure('Treeview.Item', indicatorsize=0)

这种方法似乎只适用于 Windows 10 上的 defaultclamclassic 主题。对于其他主题,Ron 的答案可能是您最好的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 2017-02-16
    • 2015-03-14
    • 2012-09-04
    • 2014-06-05
    • 2020-05-20
    • 1970-01-01
    相关资源
    最近更新 更多