You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 16:48:14