使用 tkinter 进行动态文本标记
我不知道如何使用 Tkinter 文本小部件动态标记文本范围。 这个想法是,当用户选择文本范围时,它会动态创建一个标签来修改样式。 这是我的代码:
#...code...
tag = text_field.tag_ranges(SEL)
text_field.tag_add('sizesel',tag[0],tag[1])
text_field.tag_config('sizesel',font = appFont)
此代码是绑定到 Combobox 的回调函数的一部分,因此每次值更改时文本的大小都会更改。
这段代码效果很好,但如果我尝试对第二行文本进行样式化,它将采用第一行的样式。
What I couldn't figure out is how to dynamically tag ranges of text with the Tkinter text widget.
The idea is that when the user selects a range of text, it dynamically creates a tag to modify the style.
Here's my code:
#...code...
tag = text_field.tag_ranges(SEL)
text_field.tag_add('sizesel',tag[0],tag[1])
text_field.tag_config('sizesel',font = appFont)
This code is part of a callback function that is bound to a Combobox
, so that the size of the text changes every time the value changes.
This code works great, but if I try to stylize a second line of text, it takes the style of the 1st line.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您希望每个范围都有唯一的样式,则需要使用唯一的标签,因为样式信息属于标签而不是文本范围。最简单的方法是保留一个全局(或实例属性)计数器,每次添加标签时都会递增该计数器,并将其用作标签名称的一部分。
If you want a unique style for each range you'll need to use a unique tag, because style information belongs to the tag rather than the range of text. The easiest method is to keep a global (or instance attribute) counter that you increment each time you add a tag, and use that as part of the tag name.
我是这样做的:
如您所见,我添加了一个简单的 for 语句,该语句位于 tag 上,该 tag 是包含 SEL 标记索引的变量。
Here's how I did it:
as you can see I added a simple for statement that goes on tag which is the variable that contains the indexes for the SEL tag.