tkinter treeview 更改列字体大小

Kla*_*aas 1 python treeview tkinter tkinter.style

现在我有这三个代码:

tree["columns"] = ("one", "two", "three")
tree.column("one", width=150)
tree.column("two", width=150)
tree.column("three", width=150)
tree.heading("one", text="Naar")
tree.heading("two", text="Spoor")
tree.heading("three", text="Vetrektijd")
tree['show'] = 'headings'
Run Code Online (Sandbox Code Playgroud)

但我想要做的是将字体大小更改为三列中的 20,但是我该怎么做呢?因为在互联网上我读了一些关于 Style() 的东西,但这在我的代码中不起作用

Eth*_*eld 8

有两种解决方案让我想到。

第一个是Style()您指出的使用,Treeview.Heading如果我们想改变它,它将让我们设置文本的样式。

这看起来像下面这样:

from tkinter import *
import tkinter.ttk as ttk

root = Tk()

tree = ttk.Treeview(root)
tree.pack()

style = ttk.Style()
style.configure("Treeview.Heading", font=(None, 100))

tree["columns"] = ("one", "two", "three")
tree.column("one", width=150)
tree.column("two", width=150)
tree.column("three", width=150)
tree.heading("one", text="Naar")
tree.heading("two", text="Spoor")
tree.heading("three", text="Vetrektijd")
tree['show'] = 'headings'
Run Code Online (Sandbox Code Playgroud)

这是通过为小部件内的特定元素设置样式来实现的。让我们分解一下。

style = ttk.Style()告诉 tkinter 我们正在创建一个样式并将它存储在变量中style

style.configure() 允许我们配置刚刚创建的样式。`

"Treeview.Heading" 是列标题元素的名称。

font=(None, 100)是一种增加字体大小而不必更改字体本身的“作弊”方式。如果您想更改字体样式,请None使用您想要的任何字体替换。也许Comic Sans MS


另一种选择是使用 tkinter 内置的函数调用nametofont,它让我们在更深层次上弄乱字体。

我们可以执行以下操作:

from tkinter import *
from tkinter.font import nametofont
import tkinter.ttk as ttk

root = Tk()

tree = ttk.Treeview(root)
tree.pack()

#nametofont("TkHeadingFont").configure(size=100)

tree["columns"] = ("one", "two", "three")
tree.column("one", width=150)
tree.column("two", width=150)
tree.column("three", width=150)
tree.heading("one", text="Naar")
tree.heading("two", text="Spoor")
tree.heading("three", text="Vetrektijd")
tree['show'] = 'headings'
Run Code Online (Sandbox Code Playgroud)

哪个似乎达到了相同的结果,对吧?

我们在这里做的不同之处实际上是修改 tkinter 属性的字体TkHeadingFont并告诉它将其大小更改为100. 这意味着如果您要在其他地方使用该字体,它也会以相同的样式出现。

但是,这涉及必须from tkinter.font import nametofont在程序顶部声明。

从美学上讲,这两种方法都可以达到相同的结果。