[ツール] PythonのGUI~タイトルバー~

タイトルバーのアイコン

前回のリストボックスを実現する際に示したソースコードは、実行ファイルのアイコンを外部のファイルを読み込んで表示するものでした。Pythonのファイルが置いてあるフォルダーにアイコン(拡張子.ico)を置いて、それを読み込み、タイトルバーのアイコンに指定するものです。

     icon_file = 'coco.ico'
     root.iconbitmap(default=icon_file)

Pyinstallerで実行ファイル作成

しかし、私としては、配布のためにpyinstallerを使って、GUIの実行ファイルを作成したいと思っています。しかし、これでは、いつもExeファイルとicoファイルとを同じフォルダーに置かなければならず、置いてない場合は、エラーとなってしまいます(try exceptすればいいのでしょうが)。

pyinstallerで実行ファイルを作成するときに指定できるアイコンのオプション(–icon)は、実行ファイルのアイコンを指定するだけで、タイトルバーのアイコンを変えることはできません。

>pyinstaller treeview_ui.py --onefile --icon=coco.ico  --clean --noconsole --windowed

イメージのエンコード化

ネットでググるといろいろ(1, 2)ありますが、icoを指定するのでなくて、PNGファイルをコード化して、それをアイコンにするのがよさそうです。

ソースコード

下記ソースコードの”””PNGのコード化”””にここなどでコード化したPNGファイルを貼り付け、実行すれば、イメージを外部に持たずに実行ファイルを作ることができます。

"""
タイトルバーの設定(アイコン、タイトル)
"""
import tkinter as tk
import tkinter.ttk as ttk
import base64

""" メイン画面 """
class App:
    def __init__(self,master):
        main_frame = ttk.Frame(master)
        main_frame.pack(side=tk.TOP, expand=True, fill=tk.BOTH)

if __name__ == "__main__": 
    root = tk.Tk() 
    app = App(root) 
    # PNGファイルをアイコンとして使う
    icon_base64 = \
"""PNGのコード化"""
    img_ = base64.b64decode(icon_base64)
    img_icon = tk.PhotoImage(data=img_)
    root.wm_iconphoto(True, img_icon)
    root.title(u'特許出願ココ')
    root.geometry('400x200')
    root.mainloop()

まとめ

あと少しでDocx2html.exeのGUI化ができます。

Translate »