用Tkinter打造GUI开发工具(43)Tkinter接管print输出语句
在前面博客介绍了用Tkinter做Python编辑器,我们看到可以运行Python代码,问题是,代码输出到哪里了?如果没有在Python编辑器中,我们无法看到输出结果。
因此我们需要在程序中获取print语句输出信息。
小白量化框架在HP_tk模块已经提供了现成的功能,用户只需要使用就可以了。
下面直接给出演示代码,其中有详细注释。
#小白量化用户Python代码编辑器,输出演示
#独狼荷蒲qq:2886002
#通通小白python量化群:524949939
#微信公众号:独狼股票分析
import HP_tk as htk #导入htk
#创建输入输出控制权对象myconsole
myconsole=htk.console2()
#获取系统输入input/输出print权
#接管print()函数
myconsole.SwitchOut2(sw=True)
#第一次print
print('1.我想输出信息!')
#获取print语句输出信息
s=myconsole.text
#如果需要清空text缓存可以用clear()方法
#myconsole.clear()
#释放print权利给Python系统,同时返回text输出信息
s2=myconsole.SwitchOut2(sw=False)
#清除print语句输出信息缓存
myconsole.clear()
#第二次print
print('2.刚才输出的什么信息? s=',s)
print('3.刚才输出的什么信息? s2=',s2)
Spyder中程序输入结果如下:
runfile('D:/xb2/小白输出演示2.py', wdir='D:/xb2')
Reloaded modules: HP_tk
2.刚才输出的什么信息? s= 1.我想输出信息!
3.刚才输出的什么信息? s2= 1.我想输出信息!
我们可以在上面程序中明显看到,第一次print输出“print(‘1.我想输出信息!’)”被程序接管了。
当程序释放print接管权后,才允许print语句输出信息。
我们下面给出一个用print语句输出乘法口诀表到Tkinter的Text控件中的例子。
#小白量化用户Python代码编辑器,输出演示
#独狼荷蒲qq:2886002
#通通小白python量化群:524949939
#微信公众号:独狼股票分析
import tkinter as tk #导入Tkinter
import HP_tk as htk #导入htk
#创建Tkinterz主窗口
root=tk.Tk()
root.title('Tkinter的print输出演示')
root.geometry('{}x{}+{}+{}'.format(800,600,100,100))
#创建Text文本编辑控件
txt=tk.Text()
txt.pack(fill=tk.BOTH, expand=tk.YES) #铺满Tkinter主窗口
#创建输入输出控制权对象myconsole
myconsole=htk.console2()
#获取系统输入input/输出print权
#接管print()函数
myconsole.SwitchOut2(sw=True)
#输出乘法口诀表
print('\n'.join([' '.join(['%s*%s=%-2s'%(y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)]))
#上面的print语句没有在控制台上输出.
#释放print权利给Python系统,同时返回text输出信息
s2=myconsole.SwitchOut2(sw=False)
#清除print语句输出信息缓存
myconsole.clear()
#将截获的print输出信息,输入到Text控件中.
txt.insert(tk.END, s2)
root.mainloop()
程序运行结果如下,Spyder控制台上没有输出信息。
runfile('D:/xb2/小白输出演示3.py', wdir='D:/xb2')
Reloaded modules: HP_tk
运行的图形如下:
通过上面介绍,我们读者能够利用Tkiter自己设计一个简单的Python代码编辑器。