⽤Tkinter 打造⾃⼰的PythonIDE 开发⼯具(2)实现Python 代码执⾏并输出信息⽤Tkinter打造⾃⼰的Python IDE开发⼯具(2)实现Python代码执⾏并输出信息 上⼀篇我们介绍了编辑器的实现。这篇介绍实现Python 代码执⾏并输出信息。 执⾏Python代码,我们使⽤函数exec()。其⽤法如下。
最后再实现【执⾏程序】【清空信息窗】这2个按钮的操作。下⾯我们给出完成程序代码myide001.py。exec
(object [, globals [, locals ]])
#⽤户输出信息
def myprint (txt ):
global textMess
if  textMess != None :
textMess .insert (tk .END , txt )
textMess .see (tk .END )
#输出彩⾊信息
def colorprint (txt ,color ='black'):
global textMess
if  textMess != None :
if  color !='black':
textMess .tag_config (color , foreground =color )
textMess .insert (tk .END , txt ,color )
textMess .see (tk .END )
##清空信息窗
def clearMess ():
global textMess
textMess .delete (1.0,tk .END )
#运⾏⽤户程序
def runpy ():
global textPad ,textMess
try :
msg = textPad .get (1.0,tk .END )
mg =globals ()
ml =locals ()
exec (msg ,mg ,ml )
except Exception as e :
colorprint ('\n#⽤户代码出错:'+str (e )+'\n','red')
# -*- coding : utf -8 -*-
"""
#功能:Python ⼩⽩代码编辑器
#版本:Ver1.00
python新手代码画图
#设计⼈:独狼荷蒲
#电话:185********
#QQ :2775205/2886002
#⼩⽩量化中⽂PythonTkinter :983815766
#百度:荷蒲指标,⼩⽩量化
#开始设计⽇期: 2022-01-21
#使⽤者请同意最后<;版权声明>
#最后修改⽇期:2022年1⽉25⽇
#主程序:myide .py
"""
import  tkinter  as  tk  #导⼊Tkinter
import  tkinter .ttk  as  ttk  #导⼊Tkinter .ttk
from  tkinter .scrolledtext  import ScrolledText  #导⼊ScrolledText
from tkinter .filedialog import *
#建⽴主窗⼝
root=tk.Tk()
root.title(mytitle)
#放⼏个按钮
frame=tk.Frame(root)
button1=tk.Button(frame,text='新⽂件')
button2=tk.Button(frame,text='读取⽂件')
button3=tk.Button(frame,text='另存⽂件')
button4=tk.Button(frame,text='执⾏程序')
button5=tk.Button(frame,text='清空信息窗')
button1.pack(side=tk.LEFT)
button2.pack(side=tk.LEFT)
button3.pack(side=tk.LEFT)
button4.pack(side=tk.LEFT)
button5.pack(side=tk.RIGHT)
frame.pack(side=tk.TOP,fill=tk.BOTH)
#放置⼀个⽂本框
global textPad
textPad=ScrolledText(bg='white')
textPad.pack(fill=tk.BOTH, expand=1)
textPad.focus_set()
global filename
filename='newfile.py'
#实现按钮功能
def btnfunc01():  #新⽂件
global textPad,filename
textPad.delete(1.0,tk.END)
filename='newfile.py'
def btnfunc02(): #读取⽂件
global textPad,filename
filename2 =askopenfilename(defaultextension='.py')
if filename2 !='':
textPad.delete(1.0,tk.END)#delete all
f =open(filename2,'r',encoding='utf-8',errors='ignore')
textPad.insert(1.ad())
f.close()
filename=filename2
def btnfunc03(): #另存⽂件
global textPad,filename
filename =asksaveasfilename(initialfile = filename,defaultextension ='.py') if filename !='':
fh =open(filename,'w',encoding='utf-8',errors='ignore')
msg = (1.0,tk.END)
fh.write(msg)
fh.close()
#为按钮设置功能
button1['command']=lambda:btnfunc01()
button2['command']=lambda:btnfunc02()
button3['command']=lambda:btnfunc03()
##为信息框设置⼀个容器
frame2=tk.LabelFrame(root,text='信息框',height=100)
frame2.pack(fill=tk.BOTH, expand=1)
这个程序的运⾏结果见上图。
我建议读者将这个编辑器改名为⾃⼰喜欢的编辑器的名字。
修改这⾥就可以了。
我们在这个编辑器中,编写并执⾏⾃⼰开发的代码。我们⽤Python设计⼀个杨辉三⾓程序,这个程序只能在我们开发的IDE中运⾏,完成程序代码如下:frame2
.pack (fill =tk .BOTH , expand
=1)
global textMess
#放置⼀个⽂本框作为信息输出窗⼝
textMess = ScrolledText (frame2,bg ='white', height =10)
textMess .pack (fill =tk .BOTH , expand =1)
##清空信息窗
def clearMess ():
global textMess
textMess .delete (1.0,tk .END )
#⽤户输出信息
def myprint (txt ):
global textMess
if  textMess != None :
textMess .insert (tk .END , txt )
textMess .see (tk .END )
#输出彩⾊信息
def colorprint (txt ,color ='black'):
global textMess
if  textMess != None :
if  color !='black':
textMess .tag_config (color , foreground =color )
textMess .insert (tk .END , txt ,color )
textMess .see (tk .END )
#运⾏⽤户程序
def runpy ():
global textPad ,textMess
try :
msg = textPad .get (1.0,tk .END )
mg =globals ()
ml =locals ()
exec (msg ,mg ,ml )
except Exception as e :
colorprint ('\n#⽤户代码出错:'+str (e )+'\n','red')
button4['command']=lambda :runpy ()
button5['command']=lambda :clearMess ()
root .mainloop () #进⼊Tkinter 消息循环
mytitle ='⼩⽩Python 编辑器'
程序运⾏结果见下图。
也许⼀些读者说这个IDE太简单了,我们这⾥是通过设计IDE引导⼤家学习Python的兴趣,并逐步成为Python⼤⽜。
设计下⾯的IDE也很容易。
好了,欢迎继续关注我的博客。超越⾃⼰是我的每⼀步!我的进步就是你的进步!#
杨辉三⾓
def triangles ():
N =[1] #初始化为[1],杨辉三⾓的每⼀⾏为⼀个list
while  True :
yield N #yield 实现记录功能,没有下⼀个next 将跳出循环,
S =N [:] #将list N 赋给S ,通过S 计算每⼀⾏
S .append (0) #将list 添加0,作为最后⼀个元素,长度增加1
N =[S [i -1]+S [i ] for  i in range (len (S ))] #通过S 来计算得出N
colorprint ('杨辉三⾓\n','blue')
n = 0
results = []
for  t in triangles ():
myprint (t )
myprint ('\n')  #换⾏
results .append (t )
n = n + 1
if  n == 10:
break
colorprint ('超越⾃⼰,是我的每⼀步,我的进步就是你的进步。','red')
colorprint ('  ⼩⽩量化中⽂PythonTkinter :983815766 \n','blue')

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。