tkinter开发编译器模块

这篇博客介绍了如何利用Python的tkinter库开发编译器的界面模块,特别是实现了代码高亮显示的功能。作者提到,通过self.k字典可以自定义内部参数,以调整需要突出显示的部分。未来计划继续添加更多增强功能。
import re
from math import*
import tkinter as tk
class mainUI():
    def set_keyword_color(self):
        for key,value in self.k.items():
            self.text.tag_configure(key,foreground=value)
    def set_keyword(self):
        print("hi")
    def keyword(self):
        self.keyword=tk.Toplevel()
        self.keyword.geometry('300x100')
        self.keyword.title('keyword')
        self.label=tk.Label(self.keyword, text="Keyword:")
        self.label.pack()
        self.new_k=tk.StringVar()
        self.entry=tk.Entry(self.keyword, textvariable=self.new_k)
        self.entry.pack()
        self.new_k.set(self.k)
        self.enter=tk.Button(self.keyword, text="Set", width=8, command=self.set_keyword)
        self.enter.pack()
    def able(self):
        self.text.config(state=tk.NORMAL)
    def disable(self):
        self.text.config(state=tk.DISABLED)
    def search(self,event):
        for key,value in self.k.items():
            self.text.tag_remove(key, '1.0', tk.END)
            self.start=1.0
            while True:
                self.pos=self.text.search(key,self.start,tk.END)
                if self.pos=='':
                    break
                self.text.tag_add(key,self.pos,'%s+%dc'%(self.pos, len(key)))
                self.start='%s+%dc'%(self.pos,len(key))
    def __init__(self):
        self.k ={
            '{':'blue',
            '}':'blue',
            'python':'blue',
            '"':'springgreen',
            "'":'springgreen',
            'import':'orange',
            'print':'darkblue',
            'def':'orange'
            }
        self.win=tk.Tk()
        self.win.title('text')
        self.win.geometry('500x500')  
        self.scrollbar=tk.Scrollbar()
        self.scrollbar.pack(side=tk.RIGHT,fill=tk.Y)
        self.text=tk.Text(self.win,wrap="none",bg="white",fg="black",font=('微软雅黑',10),insertbackground='lightgreen')
        self.scrollbar.config(command=self.text.yview)
        self.text.config(yscrollcommand=self.scrollbar.set)
        self.text.pack(fill=tk.BOTH,expand=True)
        self.menubar = tk.Menu(self.win)
        self.filemenu = tk.Menu(self.menubar, tearoff=0)
        #file menu
        self.menubar.add_cascade(label='File', menu=self.filemenu)
        self.filemenu.add_command(label='New', command=self.text)
        #set menu
        self.setmenu = tk.Menu(self.menubar, tearoff=0)
        self.menubar.add_cascade(label='Set', menu=self.setmenu)
        self.setmenu.add_command(label='keyword', command=self.keyword)
        self.setmenu.add_command(label='write', command=self.able)
        self.setmenu.add_command(label='lock', command=self.disable)
        self.win.config(menu=self.menubar)
        self.set_keyword_color()
        self.text.bind("<KeyRelease>",self.search)
def main():  
    mainrun = mainUI()
    mainrun.win.mainloop()  
if __name__=='__main__':  
    main()

在这里插入图片描述
其中的self.k这个字典可以更改内部的参数(可偏好更改),也就是需要加亮的字
在这里插入图片描述
目前只实现了加亮效果,下面会开发一些其他效果

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值