我知道并且已经看过突出显示一个单词的例子(例如" print"),但我想知道我是否能够做类似的事情:
[B]Bold Text[\B]
我希望它在找到时开始使文字变为粗体:
[B]
并在找到时停止使文字变为粗体:
[\B]
我知道这是它在大多数论坛网站上的工作方式,但我不知道这是否适用于Python。 我记得看过表达式" wordstart"和" wordend"在文本小部件的EffBot页面上,我认为这可能是这样做的,但我真的不知道如何将其应用到我的代码中。
这可能会被标记为副本/副本,但我还没有找到任何回答如何突出显示的内容:
[B]
EffBot页面:http://effbot.org/tkinterbook/text.htm
Post Scriptum:我也可以用标记突出显示从标记到结尾的下一个空格:
www. or http://
答案 0 :(得分:2)
我这里没有按钮,但是这里是如何找到代码,将文本转换为粗体,并隐藏代码:
#!/usr/bin/env python3
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
root = Tk()
tx = Text(root, background='white', font='Courier 12')
tx.grid(column=0, row=0, sticky=(N, W, E, S))
ybar = ttk.Scrollbar(root, orient=VERTICAL, command=tx.yview)
ybar.grid(column=1, row=0, sticky=(N, W, E, S))
xbar = ttk.Scrollbar(root, orient=HORIZONTAL, command=tx.xview)
xbar.grid(column=0, row=1, columnspan=2, sticky=(N, W, E, S))
tx["yscrollcommand"] = ybar.set
tx["xscrollcommand"] = xbar.set
tx.tag_config('hide', elide=1)
tx.tag_config('bold', font='Courier 12 bold')
lastplace=tx.index('1.0')
def boldit():
global tx, lastplace
nextplace = tx.search('[B]', lastplace, 'end')
if nextplace:
boldon = nextplace + ' +3c'
tx.tag_add('hide', nextplace, boldon)
boldoff = tx.search('[/B]', boldon, 'end')
if boldoff:
tx.tag_add('bold', boldon, boldoff)
codoff = boldoff + ' +4c'
tx.tag_add('hide', boldoff, codoff)
lastplace = codoff
boldit()
else:
return
tx.insert('1.0', """When, in the course of [B]human events,[/B] it becomes [B]necessary[/B] for one people to [B]dissolve[/B] the political bands ...""")
boldit()
root.mainloop()
你可以用“while”循环和eschew全局变量做同样的事情,但这很容易,对我有用。