Как перенести выделенный текст в виджет Tkinter Text на передний план? - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть текстовый виджет, где я отображаю некоторые данные.Я вставляю текст чередующимися цветами, чтобы лучше разделить вставленные строки.Однако теперь, когда я выделяю текст в виджете «Текст», цвет фона выделенного текста больше не отображается.По умолчанию выбранный текст имеет светло-серый фон с черным текстом, но в моем случае отображается только черный текст.

Я сделал цвет фона таким образом:

self.txt = tk.Text(self.midframe, wrap=tk.NONE, yscrollcommand=yscrollbar.set, fg="white", bg="black")
self.txt.tag_configure("even_line", background="#13001a")
self.txt.tag_configure("odd_line", background="#001a00")

...

self.txt.insert(tk.END, header, "odd_line")
for i, line in enumerate(history):
    if i % 2 == 0:
        self.txt.insert(tk.END, line, "even_line")
    else:
        self.txt.insert(tk.END, line, "odd_line")

Смотрите также, что происходит в небольшой видео ссылке ниже.В первом случае все строки в моем тексте имеют собственный фон.Когда я нажимаю «Журнал заданий», тогда только нечетные строки имеют собственный фон.

enter image description here Здесь вы видите, что текст исчезает, когда я его выбираю.

enter image description here В этом случае, когда фоновый тег четной линии был отключен, мы можем видеть выделенный текст на половине строк.

Так как я могу это исправить

1 Ответ

0 голосов
/ 08 декабря 2018

Поскольку любой заданный диапазон текста может иметь более одного тега, tkinter необходим способ узнать, какой тег имеет приоритет.Это делается путем назначения приоритета порядка.По умолчанию теги, созданные позже, имеют более высокий приоритет над тегами, созданными ранее.

Выбор представлен диапазоном текста с тегом «sel».Чтобы этот тег имел приоритет над вашими пользовательскими тегами, вам нужно повысить его приоритет, чтобы он был выше созданных вами тегов.Вы можете отрегулировать этот приоритет с помощью методов tag_raise и tag_lower.

Например, чтобы убедиться, что тег sel имеет наивысший приоритет, вы можете сделать это после создания всех остальных тегов:

self.txt.tag_raise("sel")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...