Обратите внимание, что я новичок в Tkinter. Я также просмотрел текстовые теги, но не знаю, как их применить в данном случае.
Я хотел бы изменить стиль текста в зависимости от его местоположения в списке (на самом деле это список списков).
Структура "results_list":
[["header1","entry1"],["header2","entry2"]...]
Я хотел бы, чтобы у каждого «заголовка» был другой стиль шрифта, чем у записей. Я не знаю, как это сделать/где найти дополнительную информацию (я пытался читать документацию, но не смог понять). Также обратите внимание: каждая запись может содержать более одного элемента. Графический интерфейс, который я делаю, — это приложение с определениями; каждый заголовок — это словарь, а каждая запись — одно определение (для некоторых слов существует несколько определений).
Код пока:
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. Если возможно, я бы хотел, чтобы заголовки также были центрированы.
Чтобы уточнить, такой текст, как «三省堂 スーパー大辞林», должен быть выделен жирным шрифтом и располагаться по центру, а запись под ним должна быть обычным текстом. Этот шаблон должен применяться для каждой комбинации заголовка/входа.
Я прошу прощения. Каждый элемент — это просто строка. Заголовки будут иметь те же теги, что и записи (имеется в виду, что есть два типа тегов, заголовки и записи).
Вы можете присвоить строке заголовка тег и использовать 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()
И результат:
Также обратите внимание: в каждой записи может быть более одного элемента." - пожалуйста, приведите пример. Ваше описание немного расплывчато. Кроме того, будет ли каждый первый элемент в списке (например: "header1", "header2") уникальным или несколько элементов в списке потенциально будут использовать одни и те же теги?