【问题标题】:tkinter treeview change column font sizetkinter treeview 更改列字体大小
【发布时间】:2017-10-25 12:22:00
【问题描述】:

现在我有这三个代码:

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() 的东西,但这在我的代码中不起作用

【问题讨论】:

    标签: python tkinter treeview tkinter.style


    【解决方案1】:

    我想到了两种解决方案。

    首先是使用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) 是一种增加字体大小而无需更改字体本身的“欺骗”方式。如果您想更改字体样式,请使用您想要的任何字体替换 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

    从美学上讲,任何一种方法都可以达到相同的效果。

    【讨论】:

    • 出于好奇,您选择了哪种方法。
    猜你喜欢
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 2018-09-27
    • 2015-05-07
    • 2015-10-15
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    相关资源
    最近更新 更多