应用程序启动一般都具有欢迎界面,一方面是展示开发者,另一方面则是为主程序初始化启动争取时间,主程序启动时间过长会给人一种卡死的假象,有了欢迎界面就可以化解这一问题。
利用python的tkinter,启动双线程,分别加载欢迎界面和主程序。本人没有去查找python是否有欢迎界面库(因为想自己做一个),所有下面主要介绍欢迎界面的代码实现。
直接上代码
from tkinter import *
from tkinter import ttk
import os
import time
import tkinter.font as tkFont
import threading
def showWelcome():
sw = root.winfo_screenwidth()
#得到屏幕宽度
sh = root.winfo_screenheight()
#得到屏幕高度
root.overrideredirect(True)
#窗口透明度(1为不透明,0为全透明)
root.attributes("-alpha",1)
x=(sw-475)/2
y=(sh-200)/2
#设置窗口位于屏幕中部
root.geometry("475x200+%d+%d" %(x,y))
root['bg']='black'
#插入欢迎图片,可以是logo
if os.path.exists('./Lib/img/welcome.png'):
print("Lib/img exist")
bm = PhotoImage(file = './Lib/img/welcome.png')
lb_welcomelogo = Label(root, image = bm,bg='black')
lb_welcomelogo.bm = bm
lb_welcomelogo.place(x=0, y=10,)
#插入文字,可以显示开发者或出处
lb_welcometext = Label(root, text = 'Welcome to use Long_xu application',
fg='lightgray',bg='black',font=('华文隶书', 22))
lb_welcometext.place(x=0, y=91,width=475,height=100)
def closeWelcome():
#设置欢迎页停留时间
for i in range(2):
rootMSCT.attributes("-alpha", 0)#窗口透明度
time.sleep(1)
rootMSCT.attributes("-alpha", 1)#窗口透明度
root.destroy()
if __name__=='__main__':
rootMSCT= Tk() #创建应用程序主窗口
rootMSCT.attributes("-alpha", 0) #透明状态下加载主程序
rootMSCT.title("Long_xu welcome v1.0");
msw = rootMSCT.winfo_screenwidth()
msh = rootMSCT.winfo_screenheight()
m_x=(msw-600)/2
m_y=(msh-430)/2
rootMSCT.geometry("600x430+%d+%d" %(m_x,m_y))
global root
#创建欢迎界面窗口
root = Toplevel()
tmain=threading.Thread(target=showWelcome)
tmain.start();
t1=threading.Thread(target=closeWelcome)
t1.start();
'''
主窗口程序代码
'''
rootMSCT.mainloop()
代码中写有详细注释,相对理解起来简单。由于Tk()函数的初始化作用,目前没有很好的办法解决运行程序时图形界面左上角闪烁问题。
历史修改: