tkinterのメッセージボックス左上アイコンに、任意のアイコン画像を表示したい
tkinterでGUIを作成しています。
GUIの左上アイコンを任意のアイコン画像にしているのですが、それがメッセージボックスには反映されていません。
通常のtkinterのアイコンでもなく、添付画像のような謎の画像になってしまいます。(添付し忘れていたため、編集しました)
作成したアイコンは、16x16、32x32、48x48、64x64、128x128ピクセルの.pngファイルを一つにまとめた.icoファイルのものです。
該当のソースコード
python
1import tkinter as tk 2from tkinter import messagebox 3 4root = tk.Tk() 5root.geometry("500x500") 6root.title("title") 7 8icon = "Icon.ico" 9root.iconbitmap(default=icon) 10 11def btn_click(): 12 messagebox.showinfo("message", "message") 13 14btn = tk.Button(text="BUTTON", command=btn_click) 15btn.pack() 16 17root.mainloop()
試したこと
root.iconphoto() で全てのウィンドウにアイコンを適用できるそうですが、試してみたところ、下のエラーが出ました。
python
1Traceback (most recent call last): 2 File "C:\~~~\samplepy", line 9, in <module> 3 win.iconphoto(True, tk.PhotoImage(file=r"C:\Users\~~~\Icon.ico")) 4 File "C:\Users\~~~\envs\Ormr\lib\tkinter\__init__.py", line 4061, in __init__ 5 Image.__init__(self, 'photo', name, cnf, master, **kw) 6 File "C:\Users\~~~\envs\Ormr\lib\tkinter\__init__.py", line 4006, in __init__ 7 self.tk.call(('image', 'create', imgtype, name,) + options) 8_tkinter.TclError: couldn't recognize data in image file "C:\Users\~~~\Icon.ico"
どうやら .iconphoto() は、.icoには対応していないようです。
.icoファイルでなければ複数サイズの画像を適用することができないので、.iconphoto()は今回は適さないようです。
補足情報(FW/ツールのバージョンなど)
Windows10
python 3.8.3
tkinter 8.6
追記
アイコンに使用した画像のサンプルを添付します。元画像は610x610ピクセルです。
これを元に、画像リサイズ(高画質・縮小・拡大) Web便利ツール@ツールタロウで、16x16、24x24、32x32、48x48、64x64、128x128ピクセルの画像を作りました。
そして、マルチアイコン作成で6つの画像を同梱した.icoファイルを作成しました。(※teratailの仕様で.icoファイルを添付できないため、作り方のみの説明とさせていただきます。)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/20 12:16
2020/08/20 13:46 編集
2020/08/20 15:44
2020/08/21 02:56
2020/08/21 05:44
2020/08/21 08:36 編集
2020/08/22 09:00
2020/08/22 12:08