wxpythonでウィンドウフレームにアイコンを設定する

CustomIcons - py2exe.orgを参考に

wxpython利用時、もちろんGUIが合って、ウィンドウ(フレーム)がありそこにアイコンがあるものですが、そこはどうやって設定するかということです。

py2exeでアプリケーションのアイコンを設定するときには

setup(
  windows = [
    {
      "script": "with_gui.py",
      "icon_resources": [(1, "myicon.ico")]
    }
  ],
)

となります。が、wxpythonとの関係性は無くて、wx側で独自に設定する必要が有るとか。

CustomIcons - py2exe.org
ここの最後にサンプルがあります。
サンプルでは、py2exeで作成したexeファイルから、アイコン情報を取得してそれをセットしているようです。これだとpy2exeのsetup.pyを変更するだけで自動的にフレームのアイコンも変わってくれそうですね。


単純にこんなことをやればいいと言うことで。
wx.FrameにSetIcon()が有るので、wx.Iconで処理したアイコンをセットするというイメージでしょうか。
タスクトレイのアイコンは、wx.TaskBarIcon()があって、これにもSetIcon()が有ります。この例しか無くて探すのに苦労しました・・・
(リファレンスを見てもいまいちわからないんだよなあ・・・)

class MyApp(wx.App):
	def OnInit(self):

		self.Frm = wx.Frame(None, -1, u"test frame", size=(600, 400))
		icon = wx.Icon('myicons.ico', wx.BITMAP_TYPE_ICO)
		self.Frm.SetIcon(icon)

		self.Frm.Show()

しかし、上のpy2exeコミュニティの回答はすばらしいなあ。実行ファイル内部から自分の実行ファイルのアイコンを拾ってそれを適応させる。
setup.pyだけ書き換えれば対処できるし。面倒な作業も減りますね。いやはや。

追記

wxPython Custom Icon - Python Code Snippet
こちらだと、予備としてbase64エンコードしたアイコンを埋め込んでいるようです。こんなやり方もあるんだなという補足として。