[英]Tag everything in a row after a certain character [tkinter Text widget]
作为编码方面的挑战,我一直在构建富文本编辑器。 到目前为止,我已经完成了保存/保存/加载系统和头文件的工作。 但是,当您另存为.txt时,所有标题数据都会丢失。 因此,我一直在考虑使用“#”标记标题(基本上是语法突出显示)(#-H1,##-H2,###-H3 ...)。 我环顾四周,却没有找到任何类似的东西。 到目前为止,我将其用作标题系统:
editor.tag_configure('heading7', font=heading7_font)
removeTags()
editor.tag_add('heading7', SEL_FIRST, SEL_LAST)
* heading7_font =(“ Consolas Bold”,16),removeTags():列出标签并删除所有标签。 基本上,如果您想更改字体大小(或使用特定的绑定),只需在OptionMenu上进行选择。 这个问题可能太含糊了,但是,我非常希望这样的方向或答案。
这是我整个项目的代码(是的,我知道我没有使用类,这是一个混乱的混乱局面,但是,我稍后再处理): https : //pastebin.com/wthVT6q4 (这里是样式表变量: https : //pastebin.com/WrX4EDKM )
您可以使用文本窗口小部件search
方法来搜索字符串或模式。 然后,只需将标签应用于结果即可。
这是如何在Text
类中进行记录的:
search(self, pattern, index, stopindex=None, forwards=None, backwards=None, exact=None, regexp=None, nocase=None, count=None, elide=None)
Search PATTERN beginning from INDEX until STOPINDEX.
Return the index of the first character of a match or an
empty string.
如您所见,可以使用search
方法搜索正则表达式。 由于您并不总是知道匹配文本的长度,因此可以指定一个IntVar
来获得匹配字符的数量。
例如,要搜索以##
开头的行,您可以执行以下操作:
count_var = tk.IntVar()
index = editor.search(r'## .*', "1.0", "end", count=count_var, regexp=True)
这样,您可以使用index
作为范围的开始,并使用"{} +{} chars".format(index, count_var.get())
作为范围的结束。 或者,使用"{} lineend".format(index)"
将突出显示添加到整行。
如果只想突出显示##
之后的字符,则可以通过类似的方式调整index
: "{}+{}chars".format(index, 3)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.