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的轻便web框架Bottle
Apr 08 Python
Python记录详细调用堆栈日志的方法
May 05 Python
Python实现的文本编辑器功能示例
Jun 30 Python
Flask 让jsonify返回的json串支持中文显示的方法
Mar 26 Python
django之自定义软删除Model的方法
Aug 14 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
Feb 26 Python
通过实例解析Python return运行原理
Mar 04 Python
python 通过邮件控制实现远程控制电脑操作
Mar 16 Python
python能做哪些生活有趣的事情
Sep 09 Python
python程序实现BTC(比特币)挖矿的完整代码
Jan 20 Python
python UIAutomator2使用超详细教程
Feb 19 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日历[测试通过]
2008/03/27 PHP
加强版phplib的DB类
2008/03/31 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
javascript 写的一个简单的timer
2009/07/30 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
JS 实现导航栏悬停效果(续)
2013/09/24 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
vue.js中导出Excel表格的案例分析
2019/06/11 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
Selenium(Python web测试工具)基本用法详解
2018/08/10 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
python爬虫超时的处理的实例
2018/12/19 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
计算机专业自荐信
2013/10/14 职场文书
文明寝室申报材料
2014/05/12 职场文书
大型会议策划方案
2014/05/17 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
校园广播站开场白
2015/06/01 职场文书
婚宴来宾致辞
2015/07/28 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js