Этот пример работает нормально, за исключением того, что я хочу, чтобы выделенная область охватывала ширину виджета «Текст». Моей первой мыслью было заполнить строку пробелами, используя ljust
, но так как виджет Текст будет заполняться разными типами шрифтов, он не будет работать.
Есть ли способ выделения всей строки?
import tkinter as tk
def highlight(n):
text.tag_add("highlight", "{}.0".format(n), "{}.end".format(n))
def remove_highlight(n):
text.tag_remove("highlight", "{}.0".format(n), "{}.end".format(n))
root = tk.Tk()
text = tk.Text(root, width=30, height=3, wrap=None)
text.pack()
text1 = "text"
text2 = "text2"
text.insert(tk.INSERT, "{}\n".format(text1))
text.insert(tk.INSERT, text2)
text.tag_configure("highlight", background="grey")
text.tag_configure("normal", font=("Arial", 12))
text.tag_configure("large", font=("Arial", 18))
text.tag_add("normal", "1.0", "1.end")
text.tag_add("large", "2.0", "2.end")
text.tag_bind("normal", "<Enter>", lambda event, n = 1: highlight(n))
text.tag_bind("normal", "<Leave>", lambda event, n=1: remove_highlight(n))
text.tag_bind("large", "<Enter>", lambda event, n = 2: highlight(n))
text.tag_bind("large", "<Leave>", lambda event, n=2: remove_highlight(n))
text.configure(state="disabled")
root.mainloop()