python用Tkinter做自己的中文代码编辑器


Posted in Python onSeptember 07, 2020

前面我们给了Tkinter接管Python输入和输出的介绍,我们不难可以想到,能用Tkinter来开发自己的Python代码编辑器.例如可以使用Text控件作代码编辑器.

实际上我在HP_tk2中已经封装好了现成的中文Python代码编辑器组件和防Ipython功能的组件,另用这2个组件很容易搭建出自己的代码编辑器.

下面直接给出完整演示源代码.

#中文可视化Python开发系统.py
import tkinter as tk #导入Tkinter
import tkinter.ttk as ttk #导入Tkinter.ttk
import tkinter.tix as tix #导入Tkinter.tix
from tkinter.filedialog import *
from tkinter.messagebox import *
import PIL
from PIL import Image, ImageTk, ImageDraw, ImageFont
import HP_tk2 as htk #导入htk
import webbrowser
import os
import sys
import threading
import time


#建立应用窗口
root=htk.MainWindow(title='中文Python代码编辑器',x=0,y=0,w=1200, h=800,picture='',zoom=True,center=True)
root.iconbitmap('ico/cp64.ico') #设置应用程序图标
root.SetCenter() #移动到屏幕中央


#建立菜单
menus = [['文件',['执行程序','-','新建','打开','运行','-','保存','另存为']],\
   ['编辑',['撤销','重做','-','剪切','复制','粘贴','清除','-','全选']],\
   ['显示',['绘图','表格']],\
   ['程序',['运行','编译']],\
   ['项目',['工程设置','系统设置']],\
   ['数据',['连接行情服务器','断开行情服务器','下载股票代码表','下载财务数据',\
    '下载板块数据']],\
   ['帮助',['关于软件','退出']]]
   
mainmenu=htk.windowMenu(root,menus) #窗口菜单


toolsbar=htk.ToolsBar(root,6,bg='yellow') #创建工具栏,参数1-20
toolsbar.pack(side=tk.TOP, fill=tk.X)

#改变工具条图标
png1= PIL.ImageTk.PhotoImage(PIL.Image.open('ico/New2.ico'))
png2= PIL.ImageTk.PhotoImage(PIL.Image.open('ico/APS0.ico'))
png3= PIL.ImageTk.PhotoImage(PIL.Image.open('ico/class.ico'))
png4= PIL.ImageTk.PhotoImage(PIL.Image.open('ico/clxokcnhlp1.ico'))
png5= PIL.ImageTk.PhotoImage(PIL.Image.open('ico/Table.ico'))
toolsbar.config(0,image=png1)
toolsbar.config(1,image=png2)
toolsbar.config(2,image=png3)
toolsbar.config(3,image=png4)
toolsbar.config(4,image=png5)


#创建状态栏
status=htk.StatusBar(root) #建立状态栏
status.pack(side=tk.BOTTOM, fill=tk.X)
status.clear() #清空状态栏信息
status.text(0,'状态栏') #在状态栏0输出信息
status.text(1,'超越自我!') #在状态栏2输出信息
status.text(2,'人生苦短,学习中文Pyhthon3 !') #在状态栏2输出信息
status.text(3,'设计:独狼')
status.text(4,'版权所有!')
status.text(5,'侵权必究!')
status.config(1,color='red') #改变状态栏2信息颜色
status.config(0,color='blue') #改变状态栏0信息颜色
status.config(3,width=14) #改变状态栏3宽度
#分割窗口为左右两部分,m1左,m2右
m1 = tk.PanedWindow(root,showhandle=True, sashrelief=tk.SUNKEN,sashwidth=1,width=200) #默认是左右分布的
m1.pack(fill=tk.BOTH, expand=1)

m2 = tk.PanedWindow(orient=tk.VERTICAL, showhandle=True, sashrelief=tk.SUNKEN,height=500)
m1.add(m2)
#t2是右上画面
t2=tk.Frame(m2,bg='blue',heigh=500)
m2.add(t2)
ucode=htk.useredit(t2,fontsize=12) #代码编辑框
ucode.fontsize=12

m2.paneconfig(t2,heigh=500)

#T3是右下画面
t3=tk.Frame(m2,bg='yellow',heigh=150)
m2.add(t3)
umess=htk.useredit2(t3,fontsize=12) #信息输出框
m2.paneconfig(t3,heigh=3150)
htk.ttmsg=umess.textPad #绑定信息输出变量,
ucode.outmess=htk.ttmsg #设置代码输出信息框
label3 = tk.Label(umess.statusbar ,width=5, text='AI对话:')
label3.pack(side=tk.LEFT)
us=tk.StringVar(value='')
us2=tk.Entry(umess.statusbar,width=110, textvariable=us)
us2.pack(side=tk.LEFT)
path='./guide'
ucode.loadfile(path+'/软件说明.txt')

global timer
def fun_timer2():
 global timer
 def fun_timer():
  global timer
  dt=time.strftime(' %Y-%m-%d %H:%M:%S',time.localtime(time.time()))
  status.text(1,dt) #在状态栏2输出信息
  timer = threading.Timer(1, fun_timer)
  timer.start() 
 timer = threading.Timer(1, fun_timer)
 timer.start()
 
htk.thread_it(fun_timer2()) 
def udestroy():
 global timer
 timer.cancel()
root.udestroy=udestroy
root.mainloop() #开启tk主循环

程序运行结果如下:

python用Tkinter做自己的中文代码编辑器

上面给出的是部分演示代码,如果继续深入开发,完全可以实现IDEL编辑器的功能.

上面的Python代码编辑器模块,我们已经用在商业化的小白量化软件中了.

到此这篇关于python用Tkinter做自己的中文代码编辑器的文章就介绍到这了,更多相关Tkinter 中文代码编辑器内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python使用pil生成图片验证码的方法
May 08 Python
Python字符串详细介绍
May 09 Python
Python数据分析之如何利用pandas查询数据示例代码
Sep 01 Python
python文件操作之批量修改文件后缀名的方法
Aug 10 Python
python分批定量读取文件内容,输出到不同文件中的方法
Dec 08 Python
对Python 语音识别框架详解
Dec 24 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
django连接mysql数据库及建表操作实例详解
Dec 10 Python
Jupyter Notebook的连接密码 token查询方式
Apr 21 Python
Django分组聚合查询实例分享
Apr 29 Python
python怎么删除缓存文件
Jul 19 Python
python随机打印成绩排名表
Jun 23 Python
利用Python将图片中扭曲矩形的复原
Sep 07 #Python
python利用递归方法实现求集合的幂集
Sep 07 #Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 #Python
python简单利用字典破解zip文件口令
Sep 07 #Python
python 如何快速复制序列
Sep 07 #Python
Python2与Python3关于字符串编码处理的差别总结
Sep 07 #Python
python 装饰器的实际作用有哪些
Sep 07 #Python
You might like
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
表格 隔行换色升级版
2009/11/07 Javascript
JQuery index()方法使用代码
2010/06/02 Javascript
Json序列化和反序列化方法解析
2013/12/19 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
python3 shelve模块的详解
2017/07/08 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
pygame实现飞机大战
2020/03/11 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)
2012/11/22 HTML / CSS
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
Weblogc domain问题
2014/01/27 面试题
初中教师业务学习材料
2014/05/12 职场文书
2014年国庆标语
2014/06/30 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
奖励申请报告范文
2015/05/15 职场文书
新娘婚礼致辞
2015/07/27 职场文书
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技