wxPythonでアプリケーションアイコンを設定したい気がしないでもない
という訳で。
これから、素人なりに調べた結果のメモ。方法は全3種。
動作確認環境:
Windows:Windows7(64bit),Python2.7(64bit),wxPython2.8-unicode
Ubuntu:Ubuntu10.04(64bit),Python2.6.5,wxPython2.8-unicode
FreeBSD:FreeBSD 8.1(64bit),Python2.6.5,wxPython2.8-unicode
方法その1:PNGファイルをアイコンとして使う:
import wx class MyApp(wx.App): def OnInit(self): frame = wx.Frame(None,-1,u"This is the title.") icon=wx.EmptyIcon() # BITMAP_TYPE_JPEGにすれば、JPEGも読めるんだなあ icon_source=wx.Image('fox.png',wx.BITMAP_TYPE_PNG) icon.CopyFromBitmap(icon_source.ConvertToBitmap()) frame.SetIcon(icon) frame.Show(True) self.SetTopWindow(frame) return True app = MyApp(0) app.MainLoop()
方法その2:img2pyを使う:
まず、
% img2py -ni myicon.jpeg myicon.py
ってすれば、myicon.pyってファイルが出力される。その中身はと言うと、
#---------------------------------------------------------------------- # This file was generated by /usr/bin/img2py # from wx.lib.embeddedimage import PyEmbeddedImage i = PyEmbeddedImage( "何かすげー英数字の羅列がばーっと。フォーマットはPNG") getiData = i.GetData getiImage = i.GetImage getiBitmap = i.GetBitmap
って感じ。ここまで準備したら、
import wx import myicon class MyApp(wx.App): def OnInit(self): frame = wx.Frame(None,-1,u"This is the title.") icon=wx.EmptyIcon() icon.CopyFromBitmap(myicon.getiBitmap()) frame.SetIcon(icon) frame.Show(True) self.SetTopWindow(frame) return True app = MyApp(0) app.MainLoop()
方法その3:icoファイルを準備する:
恐らく、一番単純と思われる方法。たとえば、myicon.icoというMicrosoft Windows アイコンファイルがあったとしよう。
import wx class MyApp(wx.App): def OnInit(self): frame = wx.Frame(None,-1,u"This is the title") icon=wx.Icon('myicon.ico',wx.BITMAP_TYPE_ICO) frame.SetIcon(icon) frame.Show(True) self.SetTopWindow(frame) return True app = MyApp(0) app.MainLoop()