在wxPython中,有几个内置的脚本工具可以用来做图片格式转换,在c:\Python26\Lib\site-packages\wx-2.8-msw-unicode\wx\tools\路径下,包括img2png.py、img2py.py、img2xpm.py。
可以使用这些脚本方便地转换图片,如以下两个命令,分别转换图片为.png格式和.xpm格式:
img2png.py
img2xpm.py
而img2py.py则可以将图片转换为内嵌于Python脚本的形式:
img2py.py -n AppIcon appname.icon images.py img2py.py -n AppIcon2 -a appname2.icon images.py
第二条命令可以将appname2.icon生成的内嵌文本加在images.py文件中。
然后,就可以在Frame中设置图标了:
import images.py class AppnameFrame(wx.Frame): def__init__(self,parent): wx.Frame.__init__(self,parent,-1,'Appname',size=(600,400)) self.SetIcon(images.AppIcon.GetIcon()) # ...
使用内嵌图标的好处是图标包含在程序文本中,通过编译可以实现隐蔽性。
设置窗口图标wx.SetIcon
---------------------------------------------------
一种是使用已知的ico格式的图标:
#!/usr/bin/evn python # -*- coding: cp936 -*- import wx import shutil import os class Create_Frame( wx.Frame ): def __init__( self, parent, ID, title ): wx.Frame.__init__( self, parent, ID, title, size = ( 380, 250) , style = wx.DEFAULT_FRAME_STYLE|wx.STAY_ON_TOP ) panel = wx.Panel( self, -1 ) self.icon = wx.Icon('test.ico', wx.BITMAP_TYPE_ICO) self.SetIcon(self.icon) self.list0 = ["a", "b", "c", "c", "e", "f", "g"] rb = wx.RadioBox( panel, -1, "a", wx.DefaultPosition, wx.DefaultSize, self.list0, 1, wx.RA_SPECIFY_COLS | wx.NO_BORDER ) rb.SetToolTip(wx.ToolTip("a!")) rb.Bind(wx.EVT_RADIOBOX, self.Print, rb) def Print( self, event ): ID = event.GetInt() print self.list0[ID] if __name__ == '__main__': app = wx.PySimpleApp() frame = Create_Frame(None, -1, "new frame") frame.Show( True ) app.MainLoop()
本例中ico图标文件名称是:test.ico,与程序源文件保存在同一个文件夹下即可。