= 个人介绍 = flyaflya,喜欢写程序,玩游戏 邮件:{{http://services.nexodyne.com/email/icon/ImSmGJE8W5c%3D/EJhYC.c%3D/R01haWw%3D/0/image.png}} = python = == 代码段 == === ini类 === 一个好用的ini类,像使用dict一样简单易用。 {{{ #!python import ConfigParser import string class IniSettings(dict): def __init__(self, filename): self.filename = filename self.__loadConfig() # Load the ini file into a dictionarie def __loadConfig(self): self.clear() cp = ConfigParser.ConfigParser() cp.read(self.filename) for sec in cp.sections(): settings={} name = string.lower(sec) for opt in cp.options(sec): settings[string.lower(opt)] = string.strip(cp.get(sec, opt)) self.__setitem__(name,settings) def reload(self): """Reload the config file""" self.settings = self.__loadConfig() def save(self): """save the config file""" inifile = open(self.filename, 'w') for group in self.keys(): inifile.write("\n["+group+"]\n") for key in self[group].keys(): inifile.write(str(key)+"="+str(self[group][key])+"\n") if __name__ == '__main__': settings = IniSettings('settings.ini') settings["t"]["tt"] = "ddd" settings.save() }}} == wxpython == === 换肤的实现 === 简单测试: {{attachment:skintest3.jpg}} 如果只用通用控件(不用Panel),可以实现完美换肤.... {{attachment:skinnewedit.jpg}} 对newedit进行换肤,好玩.... 原理是用win32com调用ActiveSkin实现的,因为wxpython的控件是native的,加上ActiveSkin支持COM,我也是突发奇想试了一下,想不到成功了,不过ActiveSkin是商业组件,而且现在已经停了,想买都没法买了,只有用盗版,而且只能在windows下用,有一些控件也不能很好支持,问题太多,所以我一直没公开这个技术,后来我试了很多支持COM的换肤控件包,都不关用。现在有人问起这个问题,就说一下。只需要增加三行代码。 需要安装:[[attachment:ActiveSkin43.rar]]  {{{ #!python import wx, win32com.client .... class MyApp(wx.App): def OnInit(self): self.skinLib = win32com.client.Dispatch("ActiveSkin4.Skin2") #载入ActiveSkin self.skinLib.LoadSkin("Paper.skn") #载入皮肤 frame = MyFrame(None, "Simple wxPython App") self.SetTopWindow (frame) self.skinLib.ApplySkin(frame.GetHandle()) #使用皮肤 }}} <> <> == 扩展与嵌入 == [[Swig]] - 强悍的库扩展工具 == Panda3d == [[Panda3d]] - 3d游戏库