| « | Ò»ÔÂ 2009 | » | ||||
|---|---|---|---|---|---|---|
| Ò» | ¶þ | Èý | ËÄ | Îå | Áù | ÈÕ |
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 | |
----------------ÆÀ¼Û
¿ÉÒÔ´ïµ½µÄÒ»¸öЧ¹û¾ÍÊÇ£ºÒ»¸öchangelogµÄ°æ±¾Ð޸ļǼ£¬¿ÉÒÔÍêȫȷ¶¨Ð޸ĶÔÓ¦µÄÔ´´úÂëÎļþ¡£
ºÃÓ뻵»¹ÐèҪȨºâ¡£µ«Êǽö½öÒ»Ò»µã£¬¾ÍÈÃÈËÓг¢ÊÔµÄÔ¸ÍûÁË¡£
----------------ÔÎÄ
Èí¼þ¿ª·¢ÊÇÒ»¼þºÜÍ´¿àµÄÊÂÇ飬´óÁ¿ÐµÄÐèÇóÓëÏÖÓÐÈí¼þ½á¹¹Ö®¼äµÄ³åÍ»ÊÇÔì³ÉÈí¼þÄÑÒÔά»¤µÄÒ»¸öÖ÷ÒªÔÒò¡£ºÜ ¶àÈí¼þÔÚ¸Õ¿ªÊ¼Ê±¿ÉÄܽṹºÜºÃ£¬±ãÓÚÀ©³ä£¬µ«Ëæ×ÅÈí¼þ¹¦Äܵķḻ£¬´úÂëµÄÔö¼Ó£¬¿ÉÄÜ»áÔì³É½á¹¹Ò²±äµÃ²»ÔÙÊÊÓ¦ ÐÂÐèÇóµÄ·¢Õ¹¡£¶ÔÓÚ±à¼Æ÷Èí¼þÀ´Ëµ£¬ÕâÑùµÄÎÊÌâ¸üΪÃ÷ÏÔ¡£ÄÇôNewEdit¾ÍÊÇÏëÔÚÈçºÎ¹¹ÔìÒ»ÖÖÁé»îµÄ½á¹¹·½Ãæ½ø ÐеÄÒ»ÖÖÓÐÒæµØÌ½Ë÷£¬Í¬Ê±Ëü»á·¢Õ¹³ÉΪһ¸öרҵ¡¢Îȶ¨µØ±à¼Æ÷Èí¼þ¡£Òò´Ë£¬NewEditµÄÉè¼ÆºËÐľÍÊÇ£¬ÈçºÎ¹¹ÔìÒ» ÖÖÁé»îµÄ¼Ü¹¹£¬Ê¹µÃй¦ÄܵÄÔö¼Ó¸üΪ·½±ãºÍÒ×ÓÚά»¤¡£
NewEditʹÓõÄÈí¼þ»ù´¡ÊÇPython+wxPython¡£Òò´Ë£¬NewEdit¿ÉÒÔ³ä·ÖµØÏíÊÜPythonµÄ¶¯Ì¬ÌØÐÔËù´øÀ´µÄºÃ´¦£¬Í¬ ʱÓÉÓÚʹÓÃÁËwxPython£¬»¹¿ÉÒÔʵÏÖ¿çÆ½Ì¨µÄÔËÐС£
ÕâÑù£¬NewEditµÄÉè¼ÆË¼Ïë¾ÍÊdzä·ÖÀûÓÃPythonÓïÑԵĶ¯Ì¬ÌØÐÔ£¬¹¹ÔìÒ×ÓÚÀ©³ä¶øÓÖÁé»îµÄÈí¼þÌåϵ¡£¾ßÌåµÄʵÏÖ¼¼Êõ ¾ÍÊÇÈ«²¿²ÉÓÃMixinºÍPluginµÄÉè¼ÆÓ뿪·¢·½·¨£¬¸üΪͨË×µØËµ·¨¾ÍÊÇ·Ö²¼Ê½Àà±à³Ì¼¼Êõ£¬»òÏÁÒ嵨Àí½âΪ²å¼þ±à³Ì (µ«·Ö²¼Ê½Àà±à³ÌÓë²å¼þ±à³ÌÊDz»Í¬µÄ£¬·Ö²¼Àà±à³Ì°üÀ¨MixinºÍPlugin£¬¶ø²å¼þ±à³ÌÒ»°ãÖ»°üÀ¨Plugin£¬Òò´Ë²å¼þ±à³Ì µÄ¹¦ÄÜÀ©Õ¹ÊÇÓоÖÏÞµÄ)¡£ÓÐʱΪÁ˼òµ¥£¬ÎÒ»á½Ð·Ö²¼Àà±à³ÌΪMixin£¬¾ßÌåµ½¼¼Êõϸ½Úʱ£¬»áϸ·ÖMixinºÍPlugin¡£
±ÈÈ磬Èí¼þ¸Õ¿ªÊ¼»¹ÊÇÒ»¸ö³ûÐΣ¬¿ÉÄÜÖ»ÓÐÉÙÊýµÄ¹¦ÄÜ¡£Òò´Ë£¬»áÓÐһЩʵÏÖÁË»ù´¡¹¦ÄܵÄÀà¡£µ±ÕâЩ»ù´¡¹¦ÄÜÎȶ¨£¬Í¬ ʱÓÐеÄÐèÇóʱ£¬ÕâʱÐèÒª¶ÔÕâЩÀà½øÐÐÀ©Õ¹¡£À©Õ¹»ù±¾·ÖΪÁ½ÖÖ£º
- Ðµķ½·¨¡¢ÊôÐÔµÄʵÏÖ
- Ôö¼Ó¶Ôз½·¨¡¢ÊôÐԵĵ÷ÓÃÈë¿Ú
¶ÔÓÚÎÞ·¨Í¨¹ýÐµķ½·¨¡¢ÊôÐÔʵÏֵĿÉÄÜ»¹ÐèÒªÔö¼ÓеÄÀà¡£´Ëʱ¿ÉÒÔ¶ÔÏÖÓеÄÀà²ÉÓõڶþÖÖÀ©Õ¹´Ó¶øÊµÏÖÔÓÐÀàÓëРÀàÖ®¼äµÄÁªÏµ¡£
ÖªµÀÁËÀ©Õ¹·½Ê½£¬ÄÇôÔÚÄÄÀïȥʵÏÖÄØ£¿¶ÔÓÚµÚ1ÖÖÀ©Õ¹£¬Îҵķ½·¨ÊÇ£¬»ù±¾²»¶¯ÔÀ´µÄÀàËùÔÚµÄÎļþ£¬¶øÊÇ´´½¨Ò»¸ö еÄÎļþ£¬ÔÚÕâ¸öÐÂÎļþÖÐʵÏÖÐµķ½·¨¡¢ÊôÐÔ¡£È»ºóͨ¹ýÒ»ÖÖ»úÖÆ°ÑÐµķ½·¨ºÍÊôÐÔÓëÄ¿±êÀà½øÐÐÈںϣ¬Í¬Ê±ÕâÖÖÈÚ ºÏÊÇÔÚÔËÐÐʱ²ÅʵÏֵġ£ÕâÑù£¬Ò»¸öÀàµÄ¹¦ÄÜÊÇËæ×Å¿ª·¢µÄ½øÐУ¬²»Í£µØ½øÐÐÀ©Õ¹¡£ÓÉÓÚеÄÀ©Õ¹²¢²»ÊÇÖ±½ÓÔÚÔÀ´µÄ ÎļþÖнøÐеØÐ޸쬲¢ÇÒÔÚÒ»¸öÎļþÖпÉÒÔͬʱ¶Ô¶à¸öÀà½øÐÐÀ©Õ¹£¬Òò´ËÏà¶ÔÈÝÒ×µØÖªµÀ±¾´ÎÀ©Õ¹¶¼×öÁËÄÄЩ¹¤×÷£¬¶Ô ÓÚÈí¼þµÄά»¤·Ç³£·½±ã¡£ÕâЩÀ©Õ¹»áͨ¹ýÒ»ÖÖ»úÖÆ£¬ÔÚÈí¼þÔËÐÐʱ×Ô¶¯ÓëÄ¿±êÀà½øÐÐÈںϣ¬²»ÐèÒª×ö¶îÍâµÄ¹¤×÷¡£¶ÔÓÚ ÕâÖÖÀ©Õ¹£¬ÎÒ½ÐËüΪMixinÀ©Õ¹¡£¶ÔÓÚµÚ2ÖÖÀ©Õ¹£¬Îҵķ½·¨ÊÇ£¬ÔÚÔÀ´µÄÀàÖÐÔö¼ÓÏàÓ¦µÄµ÷Óýӿڣ¬Í¬Ê±ÔÚMixinÀ©Õ¹ ÖÐÔö¼Ó¶Ôµ÷ÓýӿڵľßÌåʵÏÖ£¬´Ó¶øÍ¨¹ýµ÷Óýӿڽ«ÐÂÔöµÄ¹¦ÄÜÓëÔÀàÁªÏµÆðÀ´¡£¶ÔÓÚÕâÖÖÀ©Õ¹ÎÒ½ÐËüΪPluginÀ©Õ¹£¬ Ò²¿ÉÒÔ½Ð×ö²å¼þÀ©Õ¹¡£
Òò´ËMixinÀ©Õ¹µÄ¿ª·¢Ö÷ÒªÊǶÔÄ¿±êÀà½øÐй¦ÄÜÀ©Õ¹£¬ÈçÔö¼ÓеÄÀà·½·¨£¬ÐÞ¸ÄÀà·½·¨£¬Ôö¼ÓеÄÊôÐԵȡ£¶ÔÓÚPlugin À©Õ¹Ö÷ÒªÊÇÔÚÄ¿±êÀàÖÐÐèҪѰÕÒºÏÊʵĵ÷ÓÃλÖ㬶¨ÒåÏàÓ¦µÄµ÷Óýӿڡ£Í¬Ê±ÊµÏÖ¾ßÌåµÄPluginʵÏÖ´úÂë¡£
ÕâÀﻹ´æÔÚµÄÒ»¸öÒª¿¼ÂǵÄÎÊÌâÊÇ£¬PluginÀ©Õ¹Òª¸ù¾Ý¾ßÌåÇé¿ö¿¼ÂÇÊÇ·ñÐèҪʵÏÖ¡£Ê×ÏÈ£¬ÊµÏÖPluginÊÇÒòΪÐÂÔöµÄ·½·¨¡¢ ÊôÐÔµÄʹÓò»»á×Ô¶¯Íê³É£¬ÐèÒªÒ»¸öµ÷Óõ㡣Èç¹ûÄãÀ©Õ¹µÄ·½·¨ÊôºÏijÖÖʼþ»úÖÆµÄµ÷ÓùæÔò£¬ÄÇô¿ÉÒÔ²»ÓÃʵÏÖPlugin½Ó ¿Ú£¬·ñÔò¾ÍҪʵÏÖÏàÓ¦µÄPlugin½Ó¿Ú¡£
ÏÂÃæ¾ÙÒ»¸öÀý×Ó£¬À´¿´Ò»ÏÂÁ½ÖÖÀ©Õ¹µÄʵÏÖ¡£ÆäÖÐÓÐЩ¾ßÌåµÄϸ½Ú»¹Ã»ÓÐÉæ¼°£¬ºóÃæ»á½²µ½:
class MainFrame(wx.Frame):
def __init__(self, parent, title='Test'):
wx.Frame.__init__(self, parent, -1, title=title)
ÉÏÃæÊÇÒ»¸ö´°Ì壬Õâ¿ÉÄܾÍÊÇÎÒÃǵijûÐΡ£ÏÖÔÚÎÒÃÇÏëÔÚÉÏÃæÔö¼ÓÒ»¸ö°´Å¥£¬²¢¶Ô°´Å¥Ê¼þ½øÐÐÏìÓ¦¡£ÎÒÃÇ¿ÉÒÔÖ±½ÓÔÚ MainFrameÉÏÐ޸ġ£Èç¹ûÕâ¸öÀàºÜ¼òµ¥µ±È»¿ÉÒÔ£¬µ«Èç¹ûÕâ¸öÀàºÜ¸´ÔÓ£¬²¢ÇÒÒ»´Î¸Ä¶¯²»Ö¹Òª¸Ä¶¯Ò»¸öµØ·½£¬¾Í²»ÊÇÒ»¼þ ÈÝÒ×µÄÊÂÇéÁË¡£ÏÖÔÚÎÒÃÇʹÓÃMixinµÄ·½·¨À´×ö¡£
Èç¹ûÏëʹһ¸öÀà¿ÉÒÔʵÏÖ·Ö²¼Àà±à³Ì£¬ÄÇôÐèҪʹËü³ÉΪMixinÀ࣬ÎÒ¶¨ÒåËüΪSlotÀà(²ÛÀà)£¬ÄÇôËü¾ÍÊÇÒ»¸öÄ¿±ê À࣬½«±»½øÐÐMixinÀ©Õ¹¡£¸ÄÔìMainFrameÀàÈçÏÂ:
import Mixin
import wx
class MainFrame(wx.Frame, Mixin):
__mixinname__ = 'mainframe'
def __init__(self, parent, title='Test'):
self.initmixin()
wx.Frame.__init__(self, parent, -1, title=title)
¸ÄÔìºÜ¼òµ¥£¬Ê¹µÃMainFrameÓÐÒ»¸öMixinµÄ»ùÀ࣬¶¨ÒåÒ»¸öÀàÊôÐÔ__mixinname__£¬Èç: mainframe£¬ÔÚ__init__Öе÷ ÓÃself.initmixin()¡£ÕâÑù£¬ÎÒÃǾͰÑÒ»¸öMainFame¸ÄÔì³ÉÁËÒ»¸ö²ÛÀà¡£
´´½¨Ò»¸öÐÂÎļþ£¬½«ÓÃÓÚʵÏÖ¾ßÌåµÄÀ©Õ¹¡£ÄÚÈÝÈçÏÂ:
import Mixin
import wx
def init(win):
win.ID_CLICK = wx.NewId()
win.btnClick = wx.Button(win, win.ID_CLICK, 'Click Me')
wx.EVT_BUTTON(win.btnClick, win.ID_CLICK, win.OnClick)
def OnClick(win, event):
print 'Click Me'
win.Close()
¿ÉÒÔ¿´³öÎÒÃÇÔÚÐÂÎļþÖÐʵÏÖÁËÁ½¸ö·½·¨£¬Ò»¸öÓÃÀ´´´½¨Ò»¸ö°´Å¥£¬²¢ÇÒÉèÖõ±µ¥»÷°´Å¥Ê±£¬µ÷ÓÃOnClickʼþ´¦Àíº¯Êý¡£ÁíÒ»¸ö¾ÍÊÇ OnClickʼþ´¦Àíº¯Êý¡£Èç¹ûÎÒÃDz»Ê¹ÓÃMixinÀ©Õ¹£¬ÄÇôÕâÁ½¸öº¯Êý¿ÉÄÜÊÇÕâÑù:
import wx
class MainFrame(wx.Frame):
def __init__(self, parent, title='Test'):
wx.Frame.__init__(self, parent, -1, title=title)
self.ID_CLICK = wx.NewId()
self.btnClick = wx.Button(self, self.ID_CLICK, 'Click Me')
wx.EVT_BUTTON(self.btnClick, self.ID_CLICK, self.OnClick)
def OnClick(self, event):
print 'Click Me'
self.Close()
¿ÉÒÔ¿´³ö£¬OnClickÆäʵÊÇMainFrameµÄ³ÉÔ±·½·¨£¬¶øinitÓ¦¸ÃλÓÚ__init__ÖУ¬ÊÇ__init__ÖеÄÒ»¶Î´¦Àí¡£Èç¹ûʹÓÃMixinÓ¦¸ÃÈçºÎÐ´ÄØ£¿ ½á¹ûÊÇ:
import Mixin
import wx
def init(win):
win.ID_CLICK = wx.NewId()
win.btnClick = wx.Button(win, win.ID_CLICK, 'Click Me')
wx.EVT_BUTTON(win.btnClick, win.ID_CLICK, win.OnClick)
Mixin.setPlugin('mainframe', 'init', init)
def OnClick(win, event):
print 'Click Me'
win.Close()
Mixin.setMixin('mainframe', 'OnClick', OnClick)
setPluginÊÇPluginÉèÖ÷½·¨£¬Ëü½«°ÑinitÓë²ÛÀà('mainframe')µÄij¸öµ÷ÓõãÏà¹ØÁª£¬ÓɲÛÀàµÄʵÀý½øÐе÷Ó᣶øsetMixinÊÇMixin ÉèÖ÷½·¨£¬Ëü½«°ÑOnClick²åÈëµ½²ÛÀàÖУ¬³ÉΪ²ÛÀàµÄÒ»¸ö³ÉÔ±º¯Êý¡£
ͬʱÎÒÃÇ»¹ÐèÒªÐÞ¸ÄMainFrame£¬Ôö¼ÓÒ»¸öµ÷Óõã:
import Mixin
import wx
class MainFrame(wx.Frame, Mixin):
__mixinname__ = 'mainframe'
def __init__(self, parent, title='Test'):
self.initmixin()
wx.Frame.__init__(self, parent, -1, title=title)
self.callplugin('init', self)
ÕâÑù£¬²ÛÀàÓëMixinÎļþ¶¼×¼±¸ºÃÁË¡£ÈçºÎ²ÅÄܽ«ËüÃÇÕæÕý¹ØÁªÆðÀ´ÄØ£¿ºÜ¼òµ¥£ºÔÚÆô¶¯³ÌÐòÖн«MixinÎļþ×÷Ϊһ¸öÄ£¿éµ¼Èë¼´¿É¡£ÕâÑùÕæ ÕýµÄ¹ØÁª»áµÈµ½ÔËÐÐʱ£¬Ê×ÏÈͨ¹ýµ¼ÈëÏȽ«ËùÓÐPluginºÍMixinËѼ¯ÆðÀ´£¬È»ºóÔٵȵ½´´½¨ÊµÏÖʱ£¬Í¨¹ýself.initmixin()·½·¨ÕæÕýʵÏÖ ¹ØÁª¡£²¢ÇÒÕâÖÖ²Ù×÷Ö»»áÖ´ÐÐÒ»´Î¡£
Òò´ËMixinÓëPluginµÄÇø±ð¾ÍÊÇ£ºMixinʵÏÖÀàµÄз½·¨ºÍÊôÐÔ£¬¶øPluginʵÏÖµ÷ÓõãµÄ¾ßÌå´¦Àí¡£¸ü¼òµ¥µØÀí½â£ºMixinÊǶÔδ֪µÄÀ©Õ¹£¬¶ø PluginÊǶÔÒÑÖªµÄÀ©Õ¹¡£