如何使在编译器中输出的高亮转为文本输出后依然高亮

import jieba
from tkinter import *
from gensim import corpora,models,similarities #语料库方法,模型方法,相似度方法
from collections import defaultdict #计算单词频率

#1.读取文档
doc1=’C:\Users\hello\Desktop\a.txt’ #第一个文档
d1=open(doc1,encoding=’utf-8’).read()
data1=jieba.cut(d1)
data2=jieba.cut(d2)
data11=’’ #定义空字符串,用来放置整理后的词语
for item in data1: #遍历data1 在每个词语后面加一个空格
data11+=item+’ ‘
a=[‘我’,’父亲’,’回来’]
def gaoliang():
for i in range(0,3):
word=a[i]
global data11
text=data11
new_word = ‘\033[031m’ + word + ‘\033[0m’ # red
len_w = len(word)
len_t = len(text)
for i in range(len_t - len_w, -1, -1):
if text[i: i + len_w] == word:
text = text[:i] + new_word + text[i + len_w:]
data11=text
return text
def run1():
gaoliang()
txt = Text(root)
txt.place( relx=0.66,rely=0.3, relwidth=0.3, relheight=0.7)
txt.insert(END, data11)# 显示结果
root = Tk()
root.geometry(‘1000x750’)
root.title(‘文档提取’)
btn1 = Button(root, text=’提取第一份文档’, command=run1)
btn1.place(relx=0.1, rely=0.1, relwidth=0.1, relheight=0.05)
root.mainloop()

Jason990420
最佳答案

你这个好像是console的控制码,tkinter应该是每个字符串都加上标签,然后再设定属性。

import jieba
from tkinter import *
from gensim import corpora,models,similarities #语料库方法,模型方法,相似度方法
from collections import defaultdict #计算单词频率
'''
def gaoliang():
    global data11
    for word in a:
        new_word = '\033[031m' + word + '\033[0m' # red
        data11 = data11.replace(word, new_word)
'''
def run1():
    txt = Text(root)
    txt.place(relx=0.66, rely=0.3, relwidth=0.3, relheight=0.7)
    txt.insert(END, data11)    # 显示结果
    for t in a:
        i = 0
        while i<len(data11):
            start = f'1.0 + {i} chars'
            where = txt.search(t, start)
            if where != '':
                txt.tag_add('highlight', where, where+f' + {len(t)} chars')
                i += len(a)
            else:
                break
    txt.tag_config('highlight', background='red', foreground='white')

#1. 读取文档
doc1    = r'D:\a.txt'   #第一个文档
d1      = open(doc1, encoding='utf-8').read()
data1   = jieba.cut(d1)
data11  = ' '.join(data1)
a = ['我', '父亲', '回来']

root = Tk()
root.geometry('1000x750')
root.title('文档提取')
btn1 = Button(root, text='提取第一份文档', command=run1)
btn1.place(relx=0.1, rely=0.1, relwidth=0.2, relheight=0.05)
root.mainloop()
4年前 评论
chsl (楼主) 4年前
讨论数量: 3
Jason990420

你这个好像是console的控制码,tkinter应该是每个字符串都加上标签,然后再设定属性。

import jieba
from tkinter import *
from gensim import corpora,models,similarities #语料库方法,模型方法,相似度方法
from collections import defaultdict #计算单词频率
'''
def gaoliang():
    global data11
    for word in a:
        new_word = '\033[031m' + word + '\033[0m' # red
        data11 = data11.replace(word, new_word)
'''
def run1():
    txt = Text(root)
    txt.place(relx=0.66, rely=0.3, relwidth=0.3, relheight=0.7)
    txt.insert(END, data11)    # 显示结果
    for t in a:
        i = 0
        while i<len(data11):
            start = f'1.0 + {i} chars'
            where = txt.search(t, start)
            if where != '':
                txt.tag_add('highlight', where, where+f' + {len(t)} chars')
                i += len(a)
            else:
                break
    txt.tag_config('highlight', background='red', foreground='white')

#1. 读取文档
doc1    = r'D:\a.txt'   #第一个文档
d1      = open(doc1, encoding='utf-8').read()
data1   = jieba.cut(d1)
data11  = ' '.join(data1)
a = ['我', '父亲', '回来']

root = Tk()
root.geometry('1000x750')
root.title('文档提取')
btn1 = Button(root, text='提取第一份文档', command=run1)
btn1.place(relx=0.1, rely=0.1, relwidth=0.2, relheight=0.05)
root.mainloop()
4年前 评论
chsl (楼主) 4年前

非常感谢 :+1: :+1:

4年前 评论
Jason990420

ok?

4年前 评论
chsl (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!