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代码制作configure文件示例
Jul 28 Python
遍历python字典几种方法总结(推荐)
Sep 11 Python
python实现的二叉树定义与遍历算法实例
Jun 30 Python
python实现两个一维列表合并成一个二维列表
Dec 02 Python
python 操作hive pyhs2方式
Dec 21 Python
使用pytorch实现可视化中间层的结果
Dec 30 Python
Python print不能立即打印的解决方式
Feb 19 Python
python sitk.show()与imageJ结合使用常见的问题
Apr 20 Python
Python通过文本和图片生成词云图
May 21 Python
python实现取余操作的简单实例
Aug 16 Python
python将下载到本地m3u8视频合成MP4的代码详解
Nov 24 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 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
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
JavaScript 基础问答三
2008/12/03 Javascript
自己的js工具_Form 封装
2009/08/21 Javascript
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
js图片预加载示例
2014/04/30 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
收集的几个Python小技巧分享
2014/11/22 Python
python中日期和时间格式化输出的方法小结
2015/03/19 Python
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
Python Paramiko模块的安装与使用详解
2016/11/18 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
介绍Java的内部类
2012/10/27 面试题
揠苗助长教学反思
2014/02/04 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书