【问题标题】:Format Text in tkinter.ttk.Treeview column格式化 tkinter.ttk.Treeview 列中的文本
【发布时间】:2013-10-10 10:00:52
【问题描述】:

我想知道如何证明 ttk.Treeview 列中的文本。下面是我的意思的一个例子。请注意日期以及数字如何不正确地在彼此之下。我认为这与间距有关,但我可能是错的。

编辑:它是用 Python 3 编写的。

#! coding=utf-8
import pickle
import matplotlib.pyplot as plt
import tkinter as tk
from tkinter import ttk

# Create Example
root = tk.Tk()
root.minsize(200,300)
tree = ttk.Treeview(root,columns=("date"))
tree.heading("#0"  , text='Sample', anchor=tk.W)
tree.column("#0", stretch=0)
tree.heading("date", text='Date', anchor=tk.E)
tree.column("date", stretch=0)

ABC   = ["A","B","C","D","E"]
dates = ["3.4.2013", "14.10.400", "24.12.1234", "1.10.1", "14.7.123"]
tree.insert("",iid="1", index="end",text="No Format")
for i in range(len(ABC)):
dates2 = dates[i].split(".")
    date   = "{:<2}.{:<2}.{:<4}".format(dates2[0],dates2[1],dates2[2])
    tree.insert("1",iid="1"+str(i), index="end",text=ABC[i], value=[dates[i]])
tree.see("14")
tree.insert("",iid="2", index="end",text="With Format")
for i in range(len(ABC)):
    dates2 = dates[i].split(".")
    date   = "{:>2}.{:>2}.{:>4}".format(dates2[0],dates2[1],dates2[2])
    tree.insert("2",iid="2"+str(i), index="end",text=ABC[i], value=[date])
tree.see("24")

tree.pack(expand=True,fill=tk.BOTH)

root.mainloop()

【问题讨论】:

    标签: python python-3.x treeview tkinter ttk


    【解决方案1】:

    使用等宽字体使用tkinter.ttk.Treeview.tag_configure:

    ...
    for i in range(len(ABC)):
        dates2 = dates[i].split(".")
        date   = "{:>2}.{:>2}.{:>4}".format(dates2[0],dates2[1],dates2[2])
        tree.insert("2",iid="2"+str(i), index="end",text=ABC[i], value=[date],
                    tag='monospace') # <----
    tree.tag_configure('monospace', font='courier') # <----
    ...
    

    Tag Options

    【讨论】:

    • 嗯,确实有效,但现在不同的行有不同的字体大小,除非我以这种方式格式化。是否有调整字体大小和/或为每列指定字体大小的选项?我在标签选项中没有看到类似的东西。
    • @throwaway17434,您无需多次致电tree.tag_configure。调用一次。 (即使每个tree.insert 都需要tag='monospace'
    【解决方案2】:

    您可以使用锚选项来对齐日期列中的文本,方法与对齐日期标题中的文本相同。

    tree.heading("date", text='Date', anchor=tk.E)
    tree.column("date", stretch=0, anchor=tk.E)
    

    有关 headingcolumn 方法的锚点和其他选项的更多详细信息,请参阅 New Mexico Tech 的 Tkinter 8.5 reference: a GUI for Python

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-11
      • 2010-09-15
      • 1970-01-01
      • 2015-08-19
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      相关资源
      最近更新 更多