tkinter treeview 更改列字体大小
tkinter treeview change column font size
现在我有这个三码:
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'
但我想做的是将字体大小更改为三列中的 20
但是我该怎么做呢?
由于在互联网上我阅读了一些有关 Style() 的内容,但这在我的代码中不起作用
我想到了两个解决方案。
首先是如您所指出的 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'
这通过在小部件内设置特定元素的样式来实现。让我们分解一下。
style = ttk.Style()
告诉 tkinter 我们正在创建一个样式并将其存储在变量 style
.
中
style.configure()
允许我们配置刚刚创建的样式。`
"Treeview.Heading"
是列标题元素的名称。
font=(None, 100)
是一种 "cheaty" 增加字体大小的方法,而无需更改字体本身。如果您想更改字体样式,请将 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'
这似乎达到了相同的结果,对吧?
我们在这里所做的不同实际上是修改 tkinter 属性为 TkHeadingFont
的字体,并告诉它将其大小更改为 100
。这意味着如果您在其他地方使用该字体,它也会以相同的样式出现。
然而,这涉及到必须在程序顶部声明 from tkinter.font import nametofont
。
这两种方法在美学上都达到了相同的效果。
现在我有这个三码:
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'
但我想做的是将字体大小更改为三列中的 20 但是我该怎么做呢? 由于在互联网上我阅读了一些有关 Style() 的内容,但这在我的代码中不起作用
我想到了两个解决方案。
首先是如您所指出的 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'
这通过在小部件内设置特定元素的样式来实现。让我们分解一下。
style = ttk.Style()
告诉 tkinter 我们正在创建一个样式并将其存储在变量 style
.
style.configure()
允许我们配置刚刚创建的样式。`
"Treeview.Heading"
是列标题元素的名称。
font=(None, 100)
是一种 "cheaty" 增加字体大小的方法,而无需更改字体本身。如果您想更改字体样式,请将 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'
这似乎达到了相同的结果,对吧?
我们在这里所做的不同实际上是修改 tkinter 属性为 TkHeadingFont
的字体,并告诉它将其大小更改为 100
。这意味着如果您在其他地方使用该字体,它也会以相同的样式出现。
然而,这涉及到必须在程序顶部声明 from tkinter.font import nametofont
。
这两种方法在美学上都达到了相同的效果。