Жирный тег в текстовых виджетах с другим размером шрифта - PullRequest
0 голосов
/ 28 апреля 2020

В Tk можно создать одноранговый элемент текстового виджета, который отображает тот же контент. Также можно установить шрифт однорангового узла, отличный от размера шрифта исходного однорангового узла.

Это прекрасно работает, пока я не хочу выделить часть текста жирным шрифтом (в исходном виджете, но это не не имеет значения, будет ли текст сверстника выделен жирным шрифтом). Насколько я могу судить по просмотру text (3tk) , нет способа выделить часть текста жирным шрифтом, кроме создания тега с жирным шрифтом. Но этот шрифт затем используется и в одноранговом узле, включая размер шрифта.

import tkinter

root = tkinter.Tk()

text = tkinter.Text(root)
text.pack(side='left', fill='both', expand=True)
text.insert('end', 'hello world\n' * 10)

# Problem: the font size of the tag applies in both text widgets
text.tag_config('foo', font=('Monospace', 12, 'bold'))      
text.tag_add('foo', '2.2', '2.7')

peer = tkinter.Text(root)
peer.destroy()      # the underlying tk widget gets replaced with the peer
text.peer_create(peer, font=('Monospace', 3, ''))
peer.pack(side='left', fill='y')

root.mainloop()

Как можно выделить части текста жирным шрифтом при отображении выделенного текста с разными размерами в двух текстовых виджетах? screenshot

1 Ответ

0 голосов
/ 01 мая 2020

Существует один тег, который применяется только к одному из пиров. Это sel и представляет выбранный текст. Это работает:

peer.tag_config('sel', font=('Monospace', 3, ''))
peer.tag_add('sel', '1.0', 'end')

Большим недостатком является то, что размер шрифта возвращается к обычному, когда выделенная жирным шрифтом часть не выбрана. Если вам не нужно выделять что-либо еще, вы можете принудительно выбрать весь текст.

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