python用Tkinter做自己的中文代碼編輯器
前面我們給了Tkinter接管Python輸入和輸出的介紹,我們不難可以想到,能用Tkinter來(lái)開(kāi)發(fā)自己的Python代碼編輯器.例如可以使用Text控件作代碼編輯器.
實(shí)際上我在HP_tk2中已經(jīng)封裝好了現(xiàn)成的中文Python代碼編輯器組件和防Ipython功能的組件,另用這2個(gè)組件很容易搭建出自己的代碼編輯器.
下面直接給出完整演示源代碼.
#中文可視化Python開(kāi)發(fā)系統(tǒng).py
import tkinter as tk #導(dǎo)入Tkinter
import tkinter.ttk as ttk #導(dǎo)入Tkinter.ttk
import tkinter.tix as tix #導(dǎo)入Tkinter.tix
from tkinter.filedialog import *
from tkinter.messagebox import *
import PIL
from PIL import Image, ImageTk, ImageDraw, ImageFont
import HP_tk2 as htk #導(dǎo)入htk
import webbrowser
import os
import sys
import threading
import time
#建立應(yīng)用窗口
root=htk.MainWindow(title='中文Python代碼編輯器',x=0,y=0,w=1200, h=800,picture='',zoom=True,center=True)
root.iconbitmap('ico/cp64.ico') #設(shè)置應(yīng)用程序圖標(biāo)
root.SetCenter() #移動(dòng)到屏幕中央
#建立菜單
menus = [['文件',['執(zhí)行程序','-','新建','打開(kāi)','運(yùn)行','-','保存','另存為']],\
['編輯',['撤銷(xiāo)','重做','-','剪切','復(fù)制','粘貼','清除','-','全選']],\
['顯示',['繪圖','表格']],\
['程序',['運(yùn)行','編譯']],\
['項(xiàng)目',['工程設(shè)置','系統(tǒng)設(shè)置']],\
['數(shù)據(jù)',['連接行情服務(wù)器','斷開(kāi)行情服務(wù)器','下載股票代碼表','下載財(cái)務(wù)數(shù)據(jù)',\
'下載板塊數(shù)據(jù)']],\
['幫助',['關(guān)于軟件','退出']]]
mainmenu=htk.windowMenu(root,menus) #窗口菜單
toolsbar=htk.ToolsBar(root,6,bg='yellow') #創(chuàng)建工具欄,參數(shù)1-20
toolsbar.pack(side=tk.TOP, fill=tk.X)
#改變工具條圖標(biāo)
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)
#創(chuàng)建狀態(tài)欄
status=htk.StatusBar(root) #建立狀態(tài)欄
status.pack(side=tk.BOTTOM, fill=tk.X)
status.clear() #清空狀態(tài)欄信息
status.text(0,'狀態(tài)欄') #在狀態(tài)欄0輸出信息
status.text(1,'超越自我!') #在狀態(tài)欄2輸出信息
status.text(2,'人生苦短,學(xué)習(xí)中文Pyhthon3 !') #在狀態(tài)欄2輸出信息
status.text(3,'設(shè)計(jì):獨(dú)狼')
status.text(4,'版權(quán)所有!')
status.text(5,'侵權(quán)必究!')
status.config(1,color='red') #改變狀態(tài)欄2信息顏色
status.config(0,color='blue') #改變狀態(tài)欄0信息顏色
status.config(3,width=14) #改變狀態(tài)欄3寬度
#分割窗口為左右兩部分,m1左,m2右
m1 = tk.PanedWindow(root,showhandle=True, sashrelief=tk.SUNKEN,sashwidth=1,width=200) #默認(rèn)是左右分布的
m1.pack(fill=tk.BOTH, expand=1)
m2 = tk.PanedWindow(orient=tk.VERTICAL, showhandle=True, sashrelief=tk.SUNKEN,height=500)
m1.add(m2)
#t2是右上畫(huà)面
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是右下畫(huà)面
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 #設(shè)置代碼輸出信息框
label3 = tk.Label(umess.statusbar ,width=5, text='AI對(duì)話:')
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+'/軟件說(shuō)明.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) #在狀態(tài)欄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() #開(kāi)啟tk主循環(huán)
程序運(yùn)行結(jié)果如下:

上面給出的是部分演示代碼,如果繼續(xù)深入開(kāi)發(fā),完全可以實(shí)現(xiàn)IDEL編輯器的功能.
上面的Python代碼編輯器模塊,我們已經(jīng)用在商業(yè)化的小白量化軟件中了.
到此這篇關(guān)于python用Tkinter做自己的中文代碼編輯器的文章就介紹到這了,更多相關(guān)Tkinter 中文代碼編輯器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python異常捕獲以及簡(jiǎn)單錯(cuò)誤日志生成方式
這篇文章主要介紹了Python異常捕獲以及簡(jiǎn)單錯(cuò)誤日志生成方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Java文件與類(lèi)動(dòng)手動(dòng)腦實(shí)例詳解
在本篇文章里小編給大家整理的是關(guān)于Java文件與類(lèi)動(dòng)手動(dòng)腦實(shí)例知識(shí)點(diǎn),有需要的朋友們學(xué)習(xí)參考下。2019-11-11
python使用pytest接口自動(dòng)化測(cè)試的使用
這篇文章主要介紹了python使用pytest接口自動(dòng)化測(cè)試的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
從訓(xùn)練好的tensorflow模型中打印訓(xùn)練變量實(shí)例
今天小編就為大家分享一篇從訓(xùn)練好的tensorflow模型中打印訓(xùn)練變量實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
利用Python實(shí)現(xiàn)Excel的文件間的數(shù)據(jù)匹配功能
這篇文章主要介紹了利用Python實(shí)現(xiàn)Excel的文件間的數(shù)據(jù)匹配,本文通過(guò)一個(gè)函數(shù)實(shí)現(xiàn)此功能,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
在Python中構(gòu)建增廣矩陣的實(shí)現(xiàn)方法
今天小編就為大家分享一篇在Python中構(gòu)建增廣矩陣的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
教你怎么用Python實(shí)現(xiàn)GIF動(dòng)圖的提取及合成
今天教大家一個(gè)Python有趣好玩的小功能:將多張圖片轉(zhuǎn)為GIF,同時(shí)也可以將一個(gè)GIF動(dòng)圖提取出里面的圖片,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06

