cwhsmile 发表于 2019-4-17 17:47:19

原创:正则表达式练习软件(实时显示的哟!)

小弟笨拙,才学会tkinter的一点点技能,费了好大的功夫才做成这样{:10_250:}
目前只是个极简的雏形,后续再优化和添加功能,还望大佬指点指点,提提建议{:10_281:} ,让我接着改进{:10_265:}

不会做gif的动图,贴两张我自己测试的效果图



代码很少,就40行。

from tkinter import *
import re

root = Tk()
#设置正则窗口样式
sb1 = Scrollbar(root)
sb1.grid(row=0,column=1,sticky=NS)
text1 = Text(root,width=100,height=8,yscrollcommand=sb1.set)
text1.grid(row=0,column=0)
sb1.config(command=text1.yview)
#设置待匹配窗口样式
sb2 = Scrollbar(root)
sb2.grid(row=1,column=1,sticky=NS)
text2 = Text(root,width=100,height=40,yscrollcommand=sb2.set)
text2.grid(row=1,column=0,pady=0)
sb2.config(command=text2.yview)

#正则表达式窗口按键触发事件
def text1_insert(event):
    text1_info = text1.get(1.0,END)
    text2_info = text2.get(1.0,END)
    text1_info = fr'{text1_info}'[:-1]   #莫名其妙多了一个换行符,这里把它去掉
    text2.tag_delete("tag1")
    re_list = []
    try:
      for m in re.finditer(text1_info,text2_info):
            start = m.start()
            end = m.end()
            if start != end:
                re_list.append((start,end))
    except:
      pass
    if re_list:
      for n,m in re_list:
            text2.tag_add("tag1", f"1.0+{n}c", f"1.0+{m}c")
    text2.tag_config("tag1", background="yellow", foreground="red")
   
text1.bind('<KeyRelease>',text1_insert)

mainloop()

既然来了就留个脚印再走哈{:10_281:}

做爱的烦恼 发表于 2019-4-17 19:47:26

牛逼呀

大裤衩子 发表于 2019-4-17 22:47:20

给你一个赞&#128077;

cwhsmile 发表于 2019-4-17 22:55:34

大裤衩子 发表于 2019-4-17 22:47
给你一个赞&#128077;

{:10_281:}

致良知 发表于 2019-5-10 22:11:35

加油啊

ckblt 发表于 2022-1-26 19:04:02

牛!

yuanming1027 发表于 2022-3-1 14:05:21

牛X,太香了。我开发中可以用到

KUSA 发表于 2022-3-1 15:21:35

加油
页: [1]
查看完整版本: 原创:正则表达式练习软件(实时显示的哟!)