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读写文件操作示例程序
Dec 02 Python
python实现对文件中图片生成带标签的txt文件方法
Apr 27 Python
python3解析库lxml的安装与基本使用
Jun 27 Python
对python pandas读取剪贴板内容的方法详解
Jan 24 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
Python 中 -m 的典型用法、原理解析与发展演变
Nov 11 Python
pandas中的数据去重处理的实现方法
Feb 10 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 Python
django models里数据表插入数据id自增操作
Jul 15 Python
python调用有道智云API实现文件批量翻译
Oct 10 Python
python爬虫泛滥的解决方法详解
Nov 25 Python
Pycharm在指定目录下生成文件和删除文件的实现
Dec 28 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 面向对象实现代码
2009/11/11 PHP
JavaScript 格式字符串的应用
2010/03/29 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
javascript 文本框水印/占位符(watermark/placeholder)实现方法
2012/01/15 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
JS中with的替代方法与String中的正则方法详解
2016/12/23 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
python requests 使用快速入门
2017/08/31 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
python删除某个字符
2018/03/19 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
工厂厂长岗位职责
2013/11/08 职场文书
自考生自我评价分享
2014/01/18 职场文书
酒店辞职书范文
2015/02/26 职场文书
2015年技术员工作总结
2015/04/10 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
redis 查看所有的key方式
2021/05/07 Redis