Tkinter:基于列表中位置的文本样式
Tkinter: Text styling based on location in list
请注意我是 Tkinter 的新手。我也查看了文本标签,但我不确定在这种情况下如何应用它。
我想根据文本在列表(实际上是列表的列表)中的位置更改文本的样式。
“results_list”的结构是:
[["header1","entry1"],["header2","entry2"]...]
我希望每个“header”都具有与条目不同的字体样式。我不确定如何执行此操作/在哪里可以找到更多信息(我已尝试阅读文档,但我无法弄清楚)。另请注意:每个条目中可能包含多个元素。我正在制作的 GUI 是一个带有定义的应用程序;每个 header 是一个字典,每个条目都是一个定义(对于某些单词,有多个定义)。
到目前为止的代码:
def printDictToFrame(self,results_list):
txt = tk.Text(self.SEARCH_RESULTS_FRAME,width = 34,height=20,pady=5,padx=2,background='#d9d9d9',relief=RIDGE)
txt.place(x=10,y=10)
for r_list in results_list:
header = r_list[0]
entry = r_list[1]
txt.insert(tk.END, "{}\n".format(header.center(25,"*")))
for single_result in entry:
txt.insert(tk.END,single_result+"\n")
我使用 .center 做了一个临时的“header”。如果可能的话,我希望 headers 也居中。
需要说明的是,“三省堂スーパー大辞林”等文字应为粗体且居中,而下方的条目应为常规文字。这种模式应该适用于每个 header/entry 组合。
您可以为 header 行 分配一个标记并使用 tag_config()
使行居中并使用粗体。
下面是一个例子:
import tkinter as tk
root = tk.Tk()
txt = tk.Text(root, width=34, height=20, pady=5, padx=2, bg="#d9d9d9", relief=tk.RIDGE)
txt.pack(padx=10, pady=10)
# line with tag "header" will be centered and using bold font
txt.tag_config("header", justify="center", font=(None,10,"bold"))
results_list = [
["header1", ["entry 1"]],
["三省堂 スーパー大辞林", ["entry 2.1", "entry 2.2"]]
]
for header, entries in results_list:
txt.insert(tk.END, "{}\n".format(header), "header") # associate header with tag "header"
for single_result in entries:
txt.insert(tk.END, "{}\n".format(single_result))
root.mainloop()
结果:
请注意我是 Tkinter 的新手。我也查看了文本标签,但我不确定在这种情况下如何应用它。
我想根据文本在列表(实际上是列表的列表)中的位置更改文本的样式。
“results_list”的结构是:
[["header1","entry1"],["header2","entry2"]...]
我希望每个“header”都具有与条目不同的字体样式。我不确定如何执行此操作/在哪里可以找到更多信息(我已尝试阅读文档,但我无法弄清楚)。另请注意:每个条目中可能包含多个元素。我正在制作的 GUI 是一个带有定义的应用程序;每个 header 是一个字典,每个条目都是一个定义(对于某些单词,有多个定义)。
到目前为止的代码:
def printDictToFrame(self,results_list):
txt = tk.Text(self.SEARCH_RESULTS_FRAME,width = 34,height=20,pady=5,padx=2,background='#d9d9d9',relief=RIDGE)
txt.place(x=10,y=10)
for r_list in results_list:
header = r_list[0]
entry = r_list[1]
txt.insert(tk.END, "{}\n".format(header.center(25,"*")))
for single_result in entry:
txt.insert(tk.END,single_result+"\n")
我使用 .center 做了一个临时的“header”。如果可能的话,我希望 headers 也居中。
需要说明的是,“三省堂スーパー大辞林”等文字应为粗体且居中,而下方的条目应为常规文字。这种模式应该适用于每个 header/entry 组合。
您可以为 header 行 分配一个标记并使用 tag_config()
使行居中并使用粗体。
下面是一个例子:
import tkinter as tk
root = tk.Tk()
txt = tk.Text(root, width=34, height=20, pady=5, padx=2, bg="#d9d9d9", relief=tk.RIDGE)
txt.pack(padx=10, pady=10)
# line with tag "header" will be centered and using bold font
txt.tag_config("header", justify="center", font=(None,10,"bold"))
results_list = [
["header1", ["entry 1"]],
["三省堂 スーパー大辞林", ["entry 2.1", "entry 2.2"]]
]
for header, entries in results_list:
txt.insert(tk.END, "{}\n".format(header), "header") # associate header with tag "header"
for single_result in entries:
txt.insert(tk.END, "{}\n".format(single_result))
root.mainloop()
结果: