如何在Tkinter Treeview组件中实现行文本垂直居中?
TTK TreeView行内文本垂直居中问题
我遇到的问题是,在下方示例代码中,高亮行的文本位于顶部,未实现垂直居中。我希望达到CSS属性vertical-align: middle相同的效果。
import tkinter as tk from tkinter import ttk, font class SampleTreeView: def __init__(self, parent): columns = ('ord', 'char') font_size = 16 view_font = font.Font(family = 'Times', size = font_size, slant = font.ROMAN) style = ttk.Style() style.configure('Sample.Treeview', font = view_font, rowheight = round(font_size * 1.5)) #style.configure('Sample.Treeview.field', anchor = tk.CENTER) self._tree = ttk.Treeview(parent, style = 'Sample.Treeview', columns = columns, selectmode = tk.BROWSE, show = '', padding = (0, 0, 0, 0)) self._tree.column('#0', width = 0, stretch = tk.NO) col_widths = [0] * 2 for i in range(4): c = chr(i + 97) t = (str(ord(c)), c) for j in range(2): col_widths[j] = max(col_widths[j], view_font.measure(t[j])) self._tree.insert(parent = '', index = tk.END, iid = i, text = '', values = t) for j in range(2): w = round(col_widths[j] * 1.5) self._tree.column(columns[j], anchor = tk.CENTER, minwidth = w, width = w, stretch = tk.NO) self._tree.pack(side = tk.LEFT, expand = True, fill = tk.Y) self._tree.selection_set(3) root = tk.Tk() tv = SampleTreeView(root) root.mainloop()
环境信息
- 使用版本:tkinter 8.6.14(Linux)
补充说明
- 初始示例表现:TreeView行内文本整体靠顶部对齐,高亮选中行的文本位置偏移问题更明显
- 更新补充:有评论指出字母"g"这类带有下行的字符看起来仍未垂直居中,因此补充实际应用场景的表现(行内文本垂直偏移问题更突出)
内容的提问来源于stack exchange,提问作者antma
相关产品推荐
相关产品推荐

