試圖用 ttk.Treeview 中的影像標題替換文本標題,但影像總是右對齊。如何將影像與標題中心對齊?
這里,影像是一個藍色的小盒子,僅供演示,大多數時候,影像的大小總是小于列大小。
from PIL import Image, ImageTk
from tkinter import Tk, ttk
root = Tk()
font = ('Courier New', 20)
headings = [f'Column {i}' for i in range(3)]
treeview = ttk.Treeview(root, columns=headings, show='headings', height=5)
im = Image.new("RGBA", (20, 20), "#0000ffff")
image = ImageTk.PhotoImage(im)
for heading in headings:
treeview.heading(heading, image=image, anchor='w')
treeview.column(heading, width=200)
style = ttk.Style()
heading_name = "Treeview.Heading"
style.configure(heading_name, font=("Courier New", 40))
treeview.pack()
root.mainloop()

添加樣式布局并設定后('Treeheading.image', {'side': 'top', 'sticky': ''}),影像對齊頂部居中,而不是垂直和水平居中。
from PIL import Image, ImageTk
from tkinter import Tk, ttk
root = Tk()
font = ('Courier New', 20)
headings = [f'Column {i}' for i in range(3)]
treeview = ttk.Treeview(root, columns=headings, show='headings', height=5)
im = Image.new("RGBA", (20, 20), "#0000ffff")
image = ImageTk.PhotoImage(im)
for heading in headings:
treeview.heading(heading, image=image, anchor='w')
treeview.column(heading, width=200)
style = ttk.Style()
heading_name = "Treeview.Heading"
style.layout(heading_name,
[('Treeheading.cell', {'sticky': 'nswe'}),
('Treeheading.border', {'sticky': 'nswe', 'children': [
('Treeheading.padding', {'sticky': 'nswe', 'children': [
('Treeheading.image', {'side': 'top', 'sticky': ''}),
('Treeheading.text', {'sticky': 'we'})
]})
]})
])
style.configure(heading_name, font=("Courier New", 40))
treeview.pack()
root.mainloop()

[更新] 這是我在這里得到解決方案后我的腳本的結果。標題不是文本,而是旋轉的影像。

uj5u.com熱心網友回復:
正如我在評論中指出的,您可以為此使用 ttk.Style。一個例子可以在下面找到:
from PIL import Image, ImageTk
from tkinter import Tk, ttk
root = Tk()
style = ttk.Style(root)
font = ('Courier New', 20)
headings = [f'Column {i}' for i in range(3)]
treeview = ttk.Treeview(root, columns=headings, show='headings', height=5,
style='my.Treeview')
im = Image.new("RGBA", (20, 20), "#0000ffff")
image = ImageTk.PhotoImage(im)
for heading in headings:
treeview.heading(heading, image=image, anchor='w')
treeview.column(heading, width=200)
treeview.pack()
style.layout('my.Treeview.Heading',
[('Treeheading.cell', {'sticky': 'nswe'}),
('Treeheading.border', {'sticky': 'nswe', 'children': [
('Treeheading.padding', {'sticky': 'nswe', 'children': [
('Treeheading.image', {'side': 'top', 'sticky': '','expand':True}),
('Treeheading.text', {'sticky': 'we'})
]})
]})
])
root.mainloop()
我剛改變 ('Treeheading.image', {'side': 'right', 'sticky': ''}),
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/398959.html
上一篇:創建網格,然后按照tkinter中的給定場景對其進行著色
下一篇:帶按鈕的if陳述句
