用Tkinter打造GUI開發工具(26)Logo窗口及程序生成文字圖形

用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

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