同行文字小部件中的粗体标签,字体大小不一

问题描述 投票:0回答:1

在Tk中,可以创建一个显示相同内容的文本小组件的对等体,也可以将对等体的字体设置为不同于原始对等体的字体大小。也可以将对等体的字体设置为不同于原始对等体的字体大小。

这很好用,直到我想把部分文本加粗(在原始widget中,但同行的文本是否也被加粗并不重要)。据我所知,通过查看 文本(3tk)除了创建一个带有boldfont的标签外,没有其他方法可以加粗文本的一部分。但该字体也会在同行中使用,包括字体的大小。

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

python tkinter tk
1个回答
0
投票

有一个标签只适用于其中一个对等体。它是 sel它代表被选中的文本。这很有效。

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

一个很大的缺点是,当加粗的部分被取消选择时,字体大小会跳回原来的大小。如果你不需要选择其他东西,你可以强制所有的文本总是被选中。

© www.soinside.com 2019 - 2024. All rights reserved.