本文介绍了是否可以在不使用画布的情况下在 Tkinter 文本小部件中的单词下方显示红色波浪线?(比如拼错单词)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
根据问题标题:是否可以在不使用画布小部件的情况下在 Tkinter 文本小部件中的单词下方出现红色波浪线?(与拼错单词时一样的波浪线)
As per the question title: Is it possible to have a red squiggly line appear under words in a Tkinter text widget without using a canvas widget? (The same squiggle as when you misspell a word)
我要做这样的事情:
如果是这样,我会从哪里开始?
If so where would I start?
推荐答案
这只是使用用户定义的 XBM 作为 Textbgstipple
的示例/code> 模拟波浪线效果的小部件:
This is just an example of using user-defined XBM as the bgstipple
of part of the text inside a Text
widget to simulate the squiggly line effect:
- 创建一个 XBM 图像,例如
squiggly.xbm
,如下所示:
- create a XBM image, for example
squiggly.xbm
, like below:
一个 10x20 像素的 XBM
A XBM with 10x20 pixels
- 然后您可以使用上面的 XBM 图像文件在
Text
小部件中配置一个标记为红色的bgstipple
:
- then you can config a tag in
Text
widget using the above XBM image file asbgstipple
in red color:
# config a tag with squiggly.xbm as bgstipple in red color
textbox.tag_config("squiggly", bgstipple="@squiggly.xbm", background='red')
- 并将标签应用到
Text
小部件中的文本部分: - and apply the tag to the portion of text inside
Text
widget:
textbox.insert("end", "hello", "squiggly") # add squiggly line
以下是示例代码:
import tkinter as tk
root = tk.Tk()
textbox = tk.Text(root, width=30, height=10, font=('Courier New',12), spacing1=1)
textbox.pack()
# config a tag with squiggly.xbm as bgstipple in red color
textbox.tag_config("squiggly", bgstipple="@squiggly.xbm", background='red')
textbox.insert("end", "hello", "squiggly") # add squiggly line
textbox.insert("end", " world! ")
textbox.insert("end", "Python", "squiggly") # add squiggly line
textbox.insert("end", "\nthis is second line")
root.mainloop()
和输出:
注意XBM图片的高度需要匹配字体大小和行间距.
这篇关于是否可以在不使用画布的情况下在 Tkinter 文本小部件中的单词下方显示红色波浪线?(比如拼错单词)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!