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读写Excel文件的实例
Nov 01 Python
python使用标准库根据进程名如何获取进程的pid详解
Oct 31 Python
分享Pycharm中一些不为人知的技巧
Apr 03 Python
python实现textrank关键词提取
Jun 22 Python
Python3 单行多行万能正则匹配方法
Jan 07 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
Feb 22 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
Python关于反射的实例代码分享
Feb 20 Python
Django model.py表单设置默认值允许为空的操作
May 19 Python
Python 为什么推荐蛇形命名法原因浅析
Jun 18 Python
Python中for后接else的语法使用
May 18 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新手上路(十一)
2006/10/09 PHP
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
2018/04/20 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
React实现轮播效果
2020/08/25 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
简单了解Python中的几种函数
2017/11/03 Python
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
tensorflow 实现数据类型转换
2020/02/17 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
什么是java序列化,如何实现java序列化
2012/11/14 面试题
网络事业创业计划书范文
2014/01/09 职场文书
白酒市场开发计划书
2014/01/09 职场文书
小学教师师德承诺书
2014/05/23 职场文书
人力资源职位说明书
2014/07/29 职场文书
2015年护士节慰问信
2015/03/23 职场文书
小学四年级作文之写景
2019/08/23 职场文书
导游词之青岛崂山
2019/12/27 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server