用tkinter做一个代码编辑器(语法高亮,直接运行)
呵呵,又是我
没错,这个其实并不难,都是内置模块,完全不用担心安装不了所需库的烦恼
额额,上代码了啊!pycharm里运行杠杠滴
import tkinter as tkfrom tkinter import *from tkinter.scrolledtext import ScrolledTextfrom tkinter.filedialog import *import idlelib.colorizer as idcimport idlelib.percolator as idpdef PythonIDEA(title:str=...) -> None:"""Return None,run python codes"""root = tk.Tk()root.title(str(title))root.geometry('1300x900')root.iconphoto(False, PhotoImage(file="C:\\Users\\wsz\\PycharmProjects\\pycodes\\pycodes\\codes.png"))frame = tk.Frame(root)button = tk.Button(frame, text='Exit IDEA',bg='#252424',fg='white')button1 = tk.Button(frame, text='New file',bg='#252424',fg='white')button2 = tk.Button(frame, text='Open file',bg='#252424',fg='white')button3 = tk.Button(frame, text='Save file',bg='#252424',fg='white')button4 = tk.Button(frame, text=' ▶ ',bg='#252424',fg='#41cc32')button5 = tk.Button(frame, text='Clean python 3.10',bg='#252424',fg='white')button6 = tk.Button(frame, text=' ■ ', bg='#252424',fg='#f50000')button.pack(side=tk.LEFT)button1.pack(side=tk.LEFT)button2.pack(side=tk.LEFT)button3.pack(side=tk.LEFT)button4.pack(side=tk.LEFT)button6.pack(side=tk.LEFT)button5.pack(side=tk.RIGHT)frame.pack(side=tk.TOP, fill=tk.BOTH)global textPadtextPad = ScrolledText(bg='#252424',fg='black',font=('黑体',16))textPad.pack(fill=tk.BOTH, expand=1)textPad.focus_set()global filenamefilename = 'hellow_world.py'def btnfunc01():global textPad, filenametextPad.delete(1.0, tk.END)filename = 'hellow_world.py'def btnfunc02():global textPad, filenamefilename2 = askopenfilename(defaultextension='.py')if filename2 != '':textPad.delete(1.0, tk.END)f = open(filename2, 'r', encoding='utf-8', errors='ignore')textPad.insert(1.0, f.read())f.close()filename = filename2def btnfunc03():global textPad, filenamefilename = asksaveasfilename(initialfile=filename, defaultextension='.py')if filename != '':fh = open(filename, 'w', encoding='utf-8', errors='ignore')msg = textPad.get(1.0, tk.END)fh.write(msg)fh.close()button['command'] = lambda: root.destroy()button1['command'] = lambda: btnfunc01()button2['command'] = lambda: btnfunc02()button3['command'] = lambda: btnfunc03()frame2 = tk.LabelFrame(root, text='python 3.10', height=100)frame2.pack(fill=tk.BOTH, expand=1)global textMesstextMess = ScrolledText(frame2, bg='#252424', height=10)textMess.pack(fill=tk.BOTH, expand=1)def clearMess():global textMesstextMess.delete(1.0, tk.END)def colorprint(txt, color='black'):global textMessif textMess != None:if color != 'black':textMess.tag_config(color, foreground=color)textMess.insert(tk.END, txt, color)textMess.see(tk.END)def goto():global textPad, textMesstry:msg = textPad.get(1.0, tk.END)mg = globals()ml = locals()exec(msg, mg, ml)except Exception as e:colorprint('\n'+str(e)+'\n','red')def key(event):goto()button4['command'] = lambda: goto()button5['command'] = lambda: clearMess()root.bind('<F11>',key)idc.color_config(textPad)textPad.focus_set()textPad.config(bg='white',fg='black')p = idp.Percolator(textPad)d = idc.ColorDelegator()p.insertfilter(d)root.mainloop()return None
运行截图:
是不是很nice?
但是,那个左上角标题前的图表,你是要改一改的,不然会报错
--------------- end -----------------------------------------------------------------------------------------------------------
用tkinter做一个代码编辑器(语法高亮,直接运行)相关推荐
- 手把手带你实现Markdown编辑器语法高亮
如果喜欢不如给个star鼓励一下:ZYMarkdownEditor 什么是正则表达式? iOS开发如何使用正则表达式? 使用正则表达式匹配Markdown 性能劣势? 配合YYTextView实现语法 ...
- WPF 用 AvalonEdit 开发简单的代码编辑器 支持高亮自动提示
用 WPF 开发一个代码编辑器的难度很低,因为行业里面有很多小伙伴开发过,这些小伙伴将自己的代码开源了,发布到 NuGet 上,所以让我开发一个代码编辑器的难度实在太低.在不要有奇特的要求情况下,通过 ...
- CSDN 代码不能语法高亮的原因
CSDN代码不能语法高亮的原因探索 1.找原因 昨天写完博客发现其中代码不能高亮,本以为是写的格式出了问题.反复修改之后依然无法解决,于是打开源码查看: 打开代码对应的标签源码如下图所示: 其中对应代 ...
- ue编辑器c语言语法高亮文件,自己动手做 UEStudio/UltraEdit 的语法高亮文件 (*.uew)...
自己一直比较习惯用 UEStudio 来编写 C/C++ 文件,因为 Visual Studio 2010 实在太大了,我的 T400 都跑的费劲,所以一般我只用它来编译和调试.但是可惜的是 UESt ...
- python代码雨在桌面实现_今天七夕节,外面下着大雨,用Python的tkinter做一个下爱心雨的特效,发给妹子...
正文 今天七夕,还下着雨,刚好想做一个下着爱心雨的特效 准备图片素材 1.美图秀秀找一个爱心图,大小就50*50就可以,生成的是一个png格式文件 2.由于canvas.create_image只支持 ...
- mfc c语言 编辑器,语法高亮编辑控件Scintilla在MFC中的简单使用
项目中要使用代码编辑器,搜索之后,发现了强大的编辑器控件Scintilla. 1.简介 Scintilla是一款开源的语法高亮编辑器控件,官方网站:http://www.scintilla.org/. ...
- 在word中使用notepad++实现代码的语法高亮
转载自:http://blog.csdn.net/woohello/article/details/7621651 有时写文档时需要将代码粘贴到word中,但直接粘贴到word中的代码虽能保持换行与缩 ...
- 代码编辑器语法着色功能实现-Java版
引言 最近在整理代码时,找到了去年写的一个编辑器语法着色功能的代码.想来刚刚完成的时候,就想着能够公布出来,与大家交流.但直到现在仍寂寞的待在文件夹的角落里,颇有点明珠暗投的意思.自己能理解简单,通过 ...
- python 用tkinter 做一个简易番茄钟
之前捣鼓树莓派时,要求做一个番茄钟,但最后就只是搞成一个与树莓派没啥关系的py程序,虽然简陋,但就此记录一下自学的成果. 程序实现番茄工作法:25分钟工作,5分钟休息 完成一次番茄工作时间,就记一个番 ...
最新文章
- 云栖专辑|阿里开发者们的第二个感悟:PG大V德哥的使命感与开放心态
- 使用 JMeter 进行压力测试
- Android10.0 Binder通信原理(九)-AIDL Binder示例
- Ubuntu 10.10从零开始建立android 2.2 froyo开发环境
- 【DBMS 数据库管理系统】数据库 体系化环境 ( 数据库体系化环境简介 | 四层体系化环境 | 数据集市 )
- Oracle海量数据优化-01分区的渊源
- Angular中使用HttpClientModule模块实现get请求数据和post提交数据
- JZOJ 5244. 【NOIP2017模拟8.8A组】Daydreamin ' (daydream)
- sklearn集成学习概述
- 图:图的邻接矩阵创建、深度优先遍历和广度优先遍历详解
- 高仿真机器人助力临床医学发展
- 运用AARRR模型对App进行系统性的数据分析
- 2009年度工作安排计划
- 修改hadoop配饰文件文件后导致hive无法找到原有的dfs文件
- JVM监控及诊断工具命令行篇之jstatd
- 三菱FX3U 485ADP与东元TECO变频器N310通讯程序
- python3实现bicubic(双三次插值)重建四倍放大图像
- Spring中AOP及ReflectiveMethodInvocation逻辑简析
- 【练习】Building a Hypermedia-Driven RESTful Web Service
- python 微信投票脚本_Python自动化刷投票脚本开发,微信投票再也不需要发红包了...