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中input和raw_input的一点区别
Oct 21 Python
python的else子句使用指南
Feb 27 Python
Python字符串处理实例详解
May 18 Python
python实现决策树
Dec 21 Python
python深度优先搜索和广度优先搜索
Feb 07 Python
python 字典 按key值大小 倒序取值的实例
Jul 06 Python
Python读取数据集并消除数据中的空行方法
Jul 12 Python
基于Pytorch SSD模型分析
Feb 18 Python
python3发送request请求及查看返回结果实例
Apr 30 Python
Python3-异步进程回调函数(callback())介绍
May 02 Python
python让函数不返回结果的方法
Jun 22 Python
Java byte数组操纵方式代码实例解析
Jul 22 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查看session内容的函数
2008/08/27 PHP
PHP字符串 ==比较运算符的副作用
2009/10/21 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
php metaphone()函数及php localeconv() 函数实例解析
2016/05/15 PHP
thinkPHP5.0框架简单配置作用域的方法
2017/03/17 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
javascript知识点收藏
2007/02/22 Javascript
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
学习ExtJS border布局
2009/10/08 Javascript
js 与或运算符 || && 妙用
2009/12/09 Javascript
jquery制作LED 时钟特效
2015/02/01 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
vue移动端使用canvas签名的实现
2020/01/15 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
JSON Web Tokens的实现原理
2017/04/02 Python
Python实现简单的语音识别系统
2017/12/13 Python
python批量获取html内body内容的实例
2019/01/02 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
2019/06/17 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
用python发送微信消息
2020/12/21 Python
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
五月的鲜花活动方案
2014/08/21 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
政协工作总结2015
2015/05/20 职场文书
2015年依法治校工作总结
2015/07/27 职场文书