Как добавить тег для каждой строки — Tkinter PythonPython

Программы на Python
Anonymous
Как добавить тег для каждой строки — Tkinter Python

Сообщение Anonymous »

У меня есть функция вывода, которая при вызове вставляет текст, предоставленный для первого аргумента, в текстовое поле tkinter и добавляет к нему тег цвета из второго аргумента (см. код ниже)def Output(text, tagcol):
global OutputLine

responsezone.insert(END, f"{text}\n")
OutputLine += 1
if tagcol != "None":
responsezone.tag_add(tagcol, f"{OutputLine}.0", END)
responsezone.tag_config(tagcol, foreground = tagcol)

Если бы у меня был такой код:
Output("This text is Red", "red")
Output("This text is Yellow", "yellow)

На выходе должно быть так, что первая строка красная, а вторая желтая, но я получаю 2 красные линии, и я не совсем понимаю, почему.< /p>
Код, в котором находится этот проект, может вызвать Output() в любое время, поэтому выводимый текст невозможно предсказать (например, вручную добавлять теги к каждой строке с помощью кода).
Вот код для тестирования:
from tkinter import *
import customtkinter as CT

OutputLine = 0

root = CT.CTk()
root.geometry("1050x750")

responsezone = CT.CTkTextbox(master = root, height = 150, width = 1000, yscrollcommand = True, fg_color = "gray16", font = ("Consolas", 15))
responsezone.place(x = 25, y = 550)

def Output(text, tagcol):
global OutputLine

responsezone.insert(END, f"{text}\n")
OutputLine += 1
if tagcol != "None":
responsezone.tag_add(tagcol, f"{OutputLine}.0", END)
responsezone.tag_config(tagcol, foreground = tagcol)

root.bind("", lambda event: Output("Red", "red")) # F5 Keybind
root.bind("", lambda event: Output("Yellow", "yellow")) # F5 Keybind

root.mainloop()```



Подробнее здесь: https://stackoverflow.com/questions/790 ... ter-python

Вернуться в «Python»