1000copy@gmail.com

»¶Ó­À´µ½1000copy@gmail.com>>¡¡¡¡ | Ê×Ò³ ×ÊÔ´ÖÐÐÄ | ÔĶÁ | Python | רÀ¸Ñ§Ï°technet ϵÁÐ¿Î³Ì | ¸öÈËÄ¿±ê | ¼ÒÈË | ÍæÀÖ | ¼¼Êõ | ITPUBÂÛ̳

ժ¼£º NewEdit/doc/architecture.htm

·¢±íÈË:1000copy | ·¢±íʱ¼ä: 2007ÄêÈýÔÂ31ÈÕ, 08:10

----------------ÆÀ¼Û

¿ÉÒÔ´ïµ½µÄÒ»¸öЧ¹û¾ÍÊÇ£ºÒ»¸öchangelogµÄ°æ±¾Ð޸ļǼ£¬¿ÉÒÔÍêȫȷ¶¨Ð޸ĶÔÓ¦µÄÔ´´úÂëÎļþ¡£

ºÃÓ뻵»¹ÐèҪȨºâ¡£µ«Êǽö½öÒ»Ò»µã£¬¾ÍÈÃÈËÓг¢ÊÔµÄÔ¸ÍûÁË¡£

----------------Ô­ÎÄ

Èí¼þ¿ª·¢ÊÇÒ»¼þºÜÍ´¿àµÄÊÂÇ飬´óÁ¿ÐµÄÐèÇóÓëÏÖÓÐÈí¼þ½á¹¹Ö®¼äµÄ³åÍ»ÊÇÔì³ÉÈí¼þÄÑÒÔά»¤µÄÒ»¸öÖ÷ÒªÔ­Òò¡£ºÜ ¶àÈí¼þÔÚ¸Õ¿ªÊ¼Ê±¿ÉÄܽṹºÜºÃ£¬±ãÓÚÀ©³ä£¬µ«Ëæ×ÅÈí¼þ¹¦Äܵķḻ£¬´úÂëµÄÔö¼Ó£¬¿ÉÄÜ»áÔì³É½á¹¹Ò²±äµÃ²»ÔÙÊÊÓ¦ ÐÂÐèÇóµÄ·¢Õ¹¡£¶ÔÓڱ༭Æ÷Èí¼þÀ´Ëµ£¬ÕâÑùµÄÎÊÌâ¸üΪÃ÷ÏÔ¡£ÄÇôNewEdit¾ÍÊÇÏëÔÚÈçºÎ¹¹ÔìÒ»ÖÖÁé»îµÄ½á¹¹·½Ãæ½ø ÐеÄÒ»ÖÖÓÐÒæµØÌ½Ë÷£¬Í¬Ê±Ëü»á·¢Õ¹³ÉΪһ¸öרҵ¡¢Îȶ¨µØ±à¼­Æ÷Èí¼þ¡£Òò´Ë£¬NewEditµÄÉè¼ÆºËÐľÍÊÇ£¬ÈçºÎ¹¹ÔìÒ» ÖÖÁé»îµÄ¼Ü¹¹£¬Ê¹µÃй¦ÄܵÄÔö¼Ó¸üΪ·½±ãºÍÒ×ÓÚά»¤¡£

NewEditʹÓõÄÈí¼þ»ù´¡ÊÇPython+wxPython¡£Òò´Ë£¬NewEdit¿ÉÒÔ³ä·ÖµØÏíÊÜPythonµÄ¶¯Ì¬ÌØÐÔËù´øÀ´µÄºÃ´¦£¬Í¬ ʱÓÉÓÚʹÓÃÁËwxPython£¬»¹¿ÉÒÔʵÏÖ¿çÆ½Ì¨µÄÔËÐС£

ÕâÑù£¬NewEditµÄÉè¼ÆË¼Ïë¾ÍÊdzä·ÖÀûÓÃPythonÓïÑԵĶ¯Ì¬ÌØÐÔ£¬¹¹ÔìÒ×ÓÚÀ©³ä¶øÓÖÁé»îµÄÈí¼þÌåϵ¡£¾ßÌåµÄʵÏÖ¼¼Êõ ¾ÍÊÇÈ«²¿²ÉÓÃMixinºÍPluginµÄÉè¼ÆÓ뿪·¢·½·¨£¬¸üΪͨË×µØËµ·¨¾ÍÊÇ·Ö²¼Ê½Àà±à³Ì¼¼Êõ£¬»òÏÁÒ嵨Àí½âΪ²å¼þ±à³Ì (µ«·Ö²¼Ê½Àà±à³ÌÓë²å¼þ±à³ÌÊDz»Í¬µÄ£¬·Ö²¼Àà±à³Ì°üÀ¨MixinºÍPlugin£¬¶ø²å¼þ±à³ÌÒ»°ãÖ»°üÀ¨Plugin£¬Òò´Ë²å¼þ±à³Ì µÄ¹¦ÄÜÀ©Õ¹ÊÇÓоÖÏÞµÄ)¡£ÓÐʱΪÁ˼òµ¥£¬ÎÒ»á½Ð·Ö²¼Àà±à³ÌΪMixin£¬¾ßÌåµ½¼¼Êõϸ½Úʱ£¬»áϸ·ÖMixinºÍPlugin¡£

±ÈÈ磬Èí¼þ¸Õ¿ªÊ¼»¹ÊÇÒ»¸ö³ûÐΣ¬¿ÉÄÜÖ»ÓÐÉÙÊýµÄ¹¦ÄÜ¡£Òò´Ë£¬»áÓÐһЩʵÏÖÁË»ù´¡¹¦ÄܵÄÀà¡£µ±ÕâЩ»ù´¡¹¦ÄÜÎȶ¨£¬Í¬ ʱÓÐеÄÐèÇóʱ£¬ÕâʱÐèÒª¶ÔÕâЩÀà½øÐÐÀ©Õ¹¡£À©Õ¹»ù±¾·ÖΪÁ½ÖÖ£º

  1. Ðµķ½·¨¡¢ÊôÐÔµÄʵÏÖ
  2. Ôö¼Ó¶Ôз½·¨¡¢ÊôÐԵĵ÷ÓÃÈë¿Ú

¶ÔÓÚÎÞ·¨Í¨¹ýÐµķ½·¨¡¢ÊôÐÔʵÏֵĿÉÄÜ»¹ÐèÒªÔö¼ÓеÄÀà¡£´Ëʱ¿ÉÒÔ¶ÔÏÖÓеÄÀà²ÉÓõڶþÖÖÀ©Õ¹´Ó¶øÊµÏÖÔ­ÓÐÀàÓëРÀàÖ®¼äµÄÁªÏµ¡£

ÖªµÀÁËÀ©Õ¹·½Ê½£¬ÄÇôÔÚÄÄÀïȥʵÏÖÄØ£¿¶ÔÓÚµÚ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µÄ·½·¨À´×ö¡£

  1. Èç¹ûÏëʹһ¸öÀà¿ÉÒÔʵÏÖ·Ö²¼Àà±à³Ì£¬ÄÇôÐèҪʹËü³ÉΪ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¸ÄÔì³ÉÁËÒ»¸ö²ÛÀà¡£

  1. ´´½¨Ò»¸öÐÂÎļþ£¬½«ÓÃÓÚʵÏÖ¾ßÌåµÄÀ©Õ¹¡£ÄÚÈÝÈçÏÂ:

    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ÊǶÔÒÑÖªµÄÀ©Õ¹¡£


·¢±íÆÀÂÛ

±êÌâ

ÔÚ´ËÌí¼ÓÆÀÂÛ

³Æºô

ÓÊÏ䵨ַ£¨¿ÉÑ¡£©

¸öÈËÖ÷Ò³£¨¿ÉÑ¡£©




Valid XHTML 1.0 Strict and CSS. Powered by pLog
Design by Blog.lvwo.com