前提・実現したいこと
独学でGUIについて学んでおり、いまはスプラッシュ画面の実装を考えています。
↓ こちらのサイトに載っていたコードをコピペしたところ、自分の環境でも問題なくスプラッシュ画面を作ることができました。
https://stackoverflow.com/questions/38676617/tkinter-show-splash-screen-and-hide-main-screen-until-init-has-finished
しかし、スプラッシュ画面を画面中央に表示したく、下記コードに★部分を追記したところ、
スプラッシュ画面が最背面に現れるようになってしまいました。
Toplevelを用いて画面中央にスプラッシュ画面を表示させるには、どうすればよいでしょうか?
該当のソースコード
Python
1import tkinter as tk 2import time 3 4class TL(tk.Toplevel): 5 def __init__(self, parent): 6 tk.Toplevel.__init__(self, parent) 7 self.title("TopLevel") 8 9 ★ 10 # 画面サイズ情報を取得 11 sw = self.winfo_screenwidth() 12 sh = self.winfo_screenheight() 13 w = self.winfo_width() 14 h = self.winfo_height() 15 16 l = tk.Label(self, text="toplevel") 17 l.pack() 18 19 ★ 20 self.geometry(str(w) + "x" + str(h) + "+" + str(sw) + "+" + str(sh)) 21 22 self.update() 23 24# メイン画面表示 25class root(tk.Tk): 26 def __init__(self): 27 tk.Tk.__init__(self) 28 self.withdraw() 29 toplevel = TL(self) 30 31 self.title("main") 32 33 l = tk.Label(self, text="main") 34 l.pack() 35 36 # 待機 37 time.sleep(5) 38 39 # スプラッシュ画面を削除 40 toplevel.destroy() 41 # メイン画面を表示 42 self.deiconify() 43 44app = root() 45app.mainloop()
試したこと
最前面に表示するためTLクラスに下記コードを加筆しましたが、
結果は同じでした。
Python
1self.attributes("-topmost", True)
補足情報(FW/ツールのバージョンなど)
Windows11
Python 3.9.7
tk 8.6.11

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。