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 sys模块sys.path使用方法示例
Dec 04 Python
Python实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 Python
Python中内建函数的简单用法说明
May 05 Python
Python while 循环使用的简单实例
Jun 08 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
Aug 30 Python
Python2/3中urllib库的一些常见用法
Dec 19 Python
python实现redis三种cas事务操作
Dec 19 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
Django如何简单快速实现PUT、DELETE方法
Jul 24 Python
Python爬取知乎图片代码实现解析
Sep 17 Python
python实现简易学生信息管理系统
Apr 05 Python
Python tkinter模版代码实例
Feb 05 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 trim 去除空字符的定义与语法介绍
2010/05/31 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
一个用js实现控制台控件的代码
2007/09/04 Javascript
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
jQuery - css() 方法示例详解
2014/01/16 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
jQuery中map()方法用法实例
2015/01/06 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
2016/11/03 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
webpack+vue-cli项目中引入外部非模块格式js的方法
2018/09/28 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
浅入深出Vue之自动化路由
2019/08/06 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
Python的词法分析与语法分析
2013/05/18 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
python查看矩阵的行列号以及维数方式
2020/05/22 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
纽约手袋品牌:KARA
2018/03/18 全球购物
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
建筑工程实习自我鉴定
2013/09/19 职场文书
文秘专业应届生求职信范文
2013/11/14 职场文书
小学二年级学生评语
2014/04/21 职场文书
党员剖析材料范文
2014/09/30 职场文书
逃课检讨书怎么写
2015/01/01 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
Python集合set()使用的方法详解
2022/03/18 Python