首页 > 解决方案 > 使用迭代时在 tkinter textarea 小部件中设置多种字体

问题描述

我目前正在 tkinter 中创建一个项目,其中涉及使用 textarea 小部件。我想在文本区域小部件中设置多种字体,但唯一的问题是,我正在使用迭代,所以我无法弄清楚。

与我有关的代码:

for i in range(len(news_list)):
        txtarea.configure(font=("Bahnschrift", 20) )
        txtarea.insert(END, news_list[i]["title"] + "\n\n" )
        txtarea.configure(font=("Bahnschrift", 20) )
        txtarea.insert(END, "Description:" +  str(news_list[i]["description"]) + "\n\n" )
        txtarea.insert(END, "Read More at:" +  str(news_list[i]["url"]) + "\n\n" )
        txtarea.insert(END , "--------------------------------- " + "\n")

期望的输出:

看看不同的行有不同的字体吗?

看看不同的行有不同的字体吗?

实际输出: 在此处输入图像描述

有人可以帮我解决这个问题吗?另外,由于我是 Stackoverflow 的新手,欢迎您指出我所犯的错误。

标签: pythonuser-interfacetkintertk

解决方案


tag为每一段文本定义:

import tkinter as tk

TEXT = [("mountain", 'title'),
        ("[maʊntən]", "monospaces"),
        ("a large natural elevation of the earth's surface rising abruptly from the surrounding level", 'normal')]

root = tk.Tk()
t = tk.Text(root)
t.pack()
t.tag_configure("title", font=("Bahnschrift bold", 20))
t.tag_configure("monospaces", font=("Lucida", 12))
t.tag_configure("normal", font=("Arial", 14))

for text in TEXT:
    t.insert(tk.END, f'{text[0]}\n', text[1])
tk.mainloop()

输出:

在此处输入图像描述


推荐阅读