Python乐趣之tkinter欢迎界面

一、背景

应用程序启动一般都具有欢迎界面,一方面是展示开发者,另一方面则是为主程序初始化启动争取时间,主程序启动时间过长会给人一种卡死的假象,有了欢迎界面就可以化解这一问题。

二、思路

利用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()

效果展示:
Python乐趣之tkinter欢迎界面_第1张图片

四、结束语

代码中写有详细注释,相对理解起来简单。由于Tk()函数的初始化作用,目前没有很好的办法解决运行程序时图形界面左上角闪烁问题。
历史修改:

  1. 调整示例代码中的缩进匹配问题。2023/4/12
  2. 调整代码为标准格式。2023/4/12

你可能感兴趣的:(python,python,欢迎界面,tkinter)