在wxPython中使用图片很简单.一般你可以找一个图片文件,然后在程序中使用它就行了.这样的好处是替换编辑都方便.但是在许多wxPython程序中,如Demo,TaskCoach中都使用了另一种方式,那就是将图片转换为Python的模块,这样就可以在程序中象模块一样来调用图片了.这样的好处是可以将图片模块放在Python路径中,在哪里都可以使用,而不是象图片文件还需要处理目录了.
将图片转换为Python模块在安装完wxPython之后,会在Python的安装目录下scripts子目录中有img2py的脚本,它可以做这件事.在命令行输入(Windows下执行的是img2py.bat):
img2py
可以看到它的帮助信息.其中比较有用的是:
- -n name,它可以给生成的函数加一个名字,以方便调用.
- -a,它可以将生成的代码追回到指定的文件后.
不过好象一次只能处理一个文件.下面是一个简单的示意:
img2py -n Python python.gif image.py
img2py -a -n Logo logo.ico image.py
最后生成的image.py文件中的内容就是(部分简略):
#-----------------------------------------------------------------
# This file was generated by C:\Python24\Scripts\img2py
#
from wx import ImageFromStream, BitmapFromImage
import cStringIO, zlib
def getPythonData():
return zlib.decompress( '...' )
def getPythonBitmap():
return BitmapFromImage(getPythonImage())
def getPythonImage():
stream = cStringIO.StringIO(getPythonData())
return ImageFromStream(stream)
#-----------------------------------------------------------------
def getLogoData():
return zlib.decompress( '...' )
def getLogoBitmap():
return BitmapFromImage(getLogoImage())
def getLogoImage():
stream = cStringIO.StringIO(getLogoData())
return ImageFromStream(stream)
这样在程序中就可以通过getPythonBitmap()和getLogoBitmap()来得到Python.gif和Logo.ico这两幅图片了.