目的
tkinterを用いてスプラッシュ画面を作成します。
そもそもスプラッシュ画面とは、ソフトウェアを起動した際に表示される画面のことです。
今回は起動に時間のかかるプログラム(他機器との接続を行う等)の開始を待っている間、画像を表示することを目的としています。
サンプルコード1
今回は起動時に幅1280、高さ800のsplash.pngという画像を表示するようにしています。
流れとしては起動時にsplash.pngをタイトルバーなしの状態で表示し、5000ms後にmain関数に移るといった内容になっています。
from tkinter import *
splash = Tk()
splash.overrideredirect(1) #スプラッシュ画面のタイトルバー非表示
photo = PhotoImage(file="splash.png") #表示させたい画像ファイル指定
canvas = Canvas(bg="black", width=1280, height=800) #画像のサイズに合わせて幅と高さ調整
canvas.place(x=0, y=0)
canvas.create_image(0, 0, image=photo, anchor=NW)
def main():
splash.destroy() #スプラッシュ画面の破棄
root = Tk()
root.geometry("400x400")
splash.after(5000,main)
mainloop()
サンプルコード2
上記のサンプルコードでは、スプラッシュ画面がモニターの中央ではないところに表示されてしまい少々不格好です。そこでスプラッシュ画面をモニター中央に表示するようにしたのが下記のsplash2.pyです。
モニターの横幅、縦幅を取得しその値を用いてモニター中央に画面を表示するという形になっています。
tkinterのサイズ、位置を調整するgeometryは引数がgeometry(AxB+C+D)の形になっており、この場合は縦幅Apx、横幅Bpxの画面が縦Cpx、横Dpxの位置に表示されます。
from tkinter import *
splash = Tk()
splash.overrideredirect(1) #スプラッシュ画面のタイトルバー非表示
ww=splash_root.winfo_screenwidth() #モニターの横幅取得
wh=splash_root.winfo_screenheight() #モニターの縦幅取得
splash_root.geometry("1280x800+"+str((ww-1280)//2)+"+"+str((wh-800)//2)) #モニターの中央に画面を表示
photo = PhotoImage(file="splash.png") #表示させたい画像ファイル指定
canvas = Canvas(bg="black", width=1280, height=800) #画像のサイズに合わせて幅と高さ調整
canvas.place(x=0, y=0)
canvas.create_image(0, 0, image=photo, anchor=NW)
def main():
splash.destroy() #スプラッシュ画面の破棄
root = Tk()
root.geometry("400x400")
splash.after(5000,main)
mainloop()
コメント