用Tkinter打造GUI開發工具(26)Logo窗口及程序生成文字圖形
Python有豐富的庫,因此能使Tkinter的窗口用程序生成漂亮圖形。我們對Tkinter庫再次封裝HP_tk模塊,增加可很多新功能函數。HP_tk模塊是小白量化平臺的其中一個Tkinter增強模塊,京東、淘寶、噹噹網上購買《零基礎搭建量化投資系統——以Python爲工具》正版書,贈送小白量化平臺全部源代碼。
本篇介紹圖形生成各種大小文字,即圖片的合成。利用HP_tk模塊爲窗口建立底圖片。
下面給一個演示,主窗口上彈出一個無邊框Logo窗口,15秒後,這個窗口自動關閉。
# -*- coding: utf-8 -*-
import tkinter as tk #導入Tkinter
import HP_tk2 as htk #導入htk
import HP_global as g #建立全局數據域g
import HP_set #全局數據域g中變量初始化
from PIL import Image, ImageTk, ImageDraw, ImageFont
import threading
global timer_interval
timer_interval=1 #時鐘
global timer
global tk_image,pil_image,logolabel
def logo(root=g.root):
global tk_image,pil_image,logolabel
global timer
pil_image =Image.open('img/bj.jpg')
#獲取圖像的原始大小
w, h = pil_image.size
w2=w+1
h2=h+10
pil_image = htk.resize(w, h, w2 , h2, pil_image)
r2,g2,b2=htk.RGB(g.cns['gold'])
htk.drawFont2(pil_image,10,10,"小白量化投資分析系統",size=40,r=r2,g=g2,b=b2)
r2,g2,b2=htk.RGB(g.cns['gold'])
htk.drawFont2(pil_image,80,50,"--大衆化基於人工智能的量化投資系統",size=26,r=r2,g=g2,b=b2)
htk.drawFont3(pil_image,10,70,"超越!",size=80,r=255,g=0,b=0)
htk.drawFont3(pil_image,110,150,"是我們的每一步!",size=54,r=255,g=255,b=0)
htk.drawFont(pil_image,150,240,"設 計: 小 白",size=30,r=0,g=0,b=0)
htk.drawFont(pil_image,140,230,"設 計: 小 白",size=30,r=255,g=255,b=255)
tk_image = ImageTk.PhotoImage(pil_image)
w1 = htk.myWindow(g.root,g.title,w2,h2) #創建彈出窗口
w1.overturn() #隱藏窗口邊框
label=tk.Label(w1.top,image=tk_image)
label.place(x=0, y=0, relwidth=1, relheight=1,bordermode=tk.OUTSIDE)
htk.setCenter(w1.top,tk_image.width()+4,tk_image.height()+4)
htk.reSizable(w1.top,False, False)
logolabel = tk.StringVar()
logolabel.set('正在加載數據...')
tk.Label(w1.top, text = '',textvariable=logolabel,width=43,\
font = 'Helvetica -18 bold',bg=g.cns['darkblue'],fg='white').place(x=26, y=310)
def fun_timer():
global timer
w1.destroy()
timer.cancel()
timer = threading.Timer(10, fun_timer) #15秒後關閉窗口
timer.start()
#建立主窗口
root=htk.MainWindow(title='小白量化分析平臺2(通達信Python版 測試版)',x=100,y=200,w=800, h=600)
root.iconbitmap('ico/xb.ico') #設置應用程序圖標
root.SetCenter() #移動到屏幕中央
g.root=root
htk.thread_it(logo()) ##用多線程啓動定時器
#x=logo2()
root.mainloop()
上面程序運行結果如下。
上面代碼是小白量化分析平臺中使用的代碼。
在主程序中,使用語句"global logolabel",變爲全局變量。任何地方,都可以修改上圖最下面的文字信息。
例如小白2中main.py部分代碼如下:
logolabel.set('正在加載知識庫...')
robot_init() #聊天機器人初始化
#中間省略。
logolabel.set('正在連接行情服務器...')
htdx.TdxInit() ##初始化通達信
下面我們再看一個Logo窗口演示。這個彈出窗口,可以使用按鈕進行關閉。演示代碼如下。
# -*- coding: utf-8 -*-
import tkinter as tk #導入Tkinter
import HP_tk2 as htk #導入htk
import HP_global as g #建立全局數據域g
import HP_set #全局數據域g中變量初始化
from PIL import Image, ImageTk, ImageDraw, ImageFont
import threading
# 彈窗logo窗口
class logo2(tk.Toplevel):
def __init__(self, root=g.root):
super().__init__()
self.title('作者聲明')
self.parent = root # 顯式地保留父窗口
width = 800
height = 700
logoForm=self
htk.setCenter(self,w=800,h=710)
self.attributes('-topmost',1) #參數1,設置頂層窗口,覆蓋其它窗口。
pil_im = Image.new('RGB', (width, height), (0, 0, 0))
htk.drawFont3(pil_im,60,1,"荷蒲",52,g=0,b=0)
htk.drawFont(pil_im,160,10,"因爲無所是事,而設計了可自動化可",40,g=150)
htk.drawFont(pil_im,6,70,"AI的玩具軟件。作者沒有許可你不能使用,",40,g=180)
htk.drawFont(pil_im,4,130,"作者不會承擔可能會對你的身體造成的傷害,",40,g=200)
htk.drawFont(pil_im,2,190,"或者使你不 能虧損的風險。",40,g=220)
htk.drawFont(pil_im,2,270,"你可以給你 用,給你的雞 用,",40,g=220,b=150)
im = Image.open('ni.png')
im=im.resize((100,100))
pil_im.paste(im,(200,220),None)
im2 = Image.open('dn2.png')
im2=im2.resize((110,110))
pil_im.paste(im2,(550,210),None)
htk.drawFont(pil_im,2,365,"給你的狗 用,那將是屬於你自己的",40,r=220,g=220,b=150)
im3 = Image.open('gou2.jpg')
im3=im3.resize((100,100))
pil_im.paste(im3,(170,340),None)
htk.drawFont3(pil_im,2,470,"冒險。",40,r=220,g=220,b=150)
htk.drawFont(pil_im,100,470,"如果方便就捐點錢, 我不小心",40,r=220,g=220,b=150)
im4 = Image.open('img/1fen.png')
im4=im4.resize((100,100))
pil_im.paste(im4,(450,440),None)
htk.drawFont(pil_im,2,570,"被餓死了,那將是你最大的 。",40,r=220,g=220,b=150)
htk.drawFont2(pil_im,470,550,"損失",80,r=220,g=0,b=0)
htk.drawFont(pil_im,10,650,"聯繫QQ:2775205 捐助微信:18578755056",40,r=250,g=250,b=250)
photo=ImageTk.PhotoImage(pil_im)
htk.BackPicture(logoForm,img=photo)
#點擊按鈕。關閉窗口。
button=tk.Button(logoForm,text="同意約定\n開始捐錢",command=logoForm.destroy,font=("Times",12, ""),bd=10)
button.place(x=670,y=560)
self.grab_set()
#建立主窗口
root=htk.MainWindow(title='小白量化分析平臺2(通達信Python版 測試版)',x=100,y=200,w=1000, h=900)
root.iconbitmap('ico/xb.ico') #設置應用程序圖標
root.SetCenter() #移動到屏幕中央
g.root=root
x=logo2() #啓動logo窗口
root.mainloop()
程序執行結果如下。
《零基礎搭建量化投資系統——以Python爲工具》不僅僅是開發量化投資平臺軟件的書籍,裏面提供的知識和量化庫模塊。你可以設計各種Python圖形GUI應用程序。經過打包爲爲exe文件,可以把你的Python程序給任何不懂電腦,沒有安裝Python環境的電腦小白使用。
如果想了解,加入我們羣,下載小白量化軟件使用。用戶像安裝一個普通windows程序那樣來安裝Python編寫的程序。你可以把你的Python程序通過HP_tk美化後,打包爲exe文件,可以在任何人的電腦上展示。
HP_tk.py是小白量化提供的模塊之一。完整代碼見《零基礎搭建量化投資系統――以Python爲工具》一書提供的完整示例。
該書在京東、淘寶、噹噹網上銷售,歡迎大家訂購正版書。
#購買<零基礎搭建量化投資系統>正版書,送小白量化軟件源代碼。
#獨狼荷蒲qq:2775205
#通通小白python量化羣:524949939
#電話微信:18578755056
#微信公衆號:獨狼股票分析
其他QQ羣:
PythonTkinterGUI : 517029284
Python學習交流: 647866213