【发布时间】:2021-03-03 17:40:55
【问题描述】:
在 tkinter 树视图中,我将图像添加到每一行,但图像和文本之间没有空格。
这是一个工作示例的代码:
import tkinter as tk
from tkinter import ttk
from PIL import ImageTk, Image
class App(ttk.Frame):
def __init__(self, parent, *args, **kwargs):
ttk.Frame.__init__(self, parent)
self.parent = parent
# Create Treeview
self.tree = ttk.Treeview(self.parent, selectmode='browse')
ttk.Style().configure("Treeview", rowheight=21)
self.tree.pack(expand=True, fill='both', side='left')
# Setup column heading
self.tree.heading('#0', text='Items', anchor='center')
# Setup columns
self.tree.column('#0', minwidth=100, width=200, stretch=False)
image = Image.new('RGB', (24, 18), 'cyan')
self.cyan = ImageTk.PhotoImage(image)
image = Image.new('RGB', (24, 18), 'orange')
self.orange = ImageTk.PhotoImage(image)
image = Image.new('RGB', (24, 18), 'yellow')
self.yellow = ImageTk.PhotoImage(image)
image = Image.new('RGB', (24, 18), 'red')
self.red = ImageTk.PhotoImage(image)
image = Image.new('RGB', (24, 18), 'green')
self.green = ImageTk.PhotoImage(image)
image = Image.new('RGB', (24, 18), 'purple')
self.purple = ImageTk.PhotoImage(image)
self.tree.insert('', '0', '0', text="Cyan", image=self.cyan)
self.tree.insert('', '1', '1', text="Orange", image=self.orange)
self.tree.insert('', '2', '2', text="Green", image=self.green)
self.tree.insert('', '3', '3', text="Purple", image=self.purple)
self.tree.insert('', '4', '4', text="Red", image=self.red)
self.tree.insert('', '5', '5', text="Yellow", image=self.yellow)
if __name__ == '__main__':
root = tk.Tk()
root.geometry('400x175+200+100')
App(root)
root.mainloop()
我希望在每行的文本前留出更多空间。
这似乎不同于我在我拥有的任何软件中看到的任何东西。
当然有一个简单的解决方法:只需在文本的开头添加几个空格,但这似乎不是一个很好的解决方案,因为一旦开始处理它就更有可能出错来自不同方法的文本(检索或更改)。
另一种方法是在图片后面加一个稍微宽一点的透明层,但这也不是很好,因为它非常精细(实际上我不确定这是否可行),而且我在空间还可以的不同上下文,所以我必须复制图像。
我想一定有更聪明的方法,但我找不到。 有人知道吗?
【问题讨论】:
标签: python-3.x tkinter treeview