用Tkinter打造GUI開發工具(43)Tkinter接管print輸出語句

用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代碼編輯器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章