用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