本文介绍了是否可以在不使用画布的情况下在 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 as bgstipple 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 文本小部件中的单词下方显示红色波浪线?(比如拼错单词)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-11 05:00