zoukankan      html  css  js  c++  java
  • wxpython之pubsub 发布订阅者模式

    wxPython Pubsub 包提供的发布-订阅模式,允许您的应用程序的不同部分之间发送数据。在许多情况下,使用发布-订阅者模式,将大大简化其设计复杂度和提高可测试性。罗宾 · 邓恩,创建者的 wxPython,优雅的对Pubsub描述:

      基本上你的程序的一些部件订阅特定的主题,然后其它部件发布该主题的消息。

    图解:

    Publisher基本用法:

    pub.subscribe(listener, topic):listener订阅者,这边一般是函数。topic,uniqu的主题。

    sendMessage(topic, data, onTopicNeverCreated):topic,uniqu的主题,data 要传给订阅者的数据。onTopicNeverCreated如果没有这个主题被订阅,应该有onTopicNeverCreated处理

    例子:

    #-*- coding: UTF-8 -*-
    #-------------------------------------------------------------------------------
    # Name:        
    # Purpose:     
    #
    # Author:      ankier
    #
    # Created:     12-01-2013
    # Copyright:   (c) ankier 2013
    # Licence:     <your licence>
    #-------------------------------------------------------------------------------
    
    from wx.lib.pubsub import Publisher as pub
    
    class Student():
        def __init__(self):
            self.__Name = None        
            #注册订阅事件
            pub.subscribe(self.__UpdateName,  'nameEvntTopic')
        
        def SetName(self, name):
            self.__Name = name
         
        #订阅事件    
        def __UpdateName(self, eventTopicData):
            if self.__Name == 'NameA':
                print 'You can not give me a new name as my name is ',self.__Name
                return
            else:
                print 'I change name to ', eventTopicData.data
            self.__Name = eventTopicData.data    
    
    stuA = Student()
    stuA.SetName('NameA')
    stuB = Student()
    stuB.SetName('NameB')
    
    #发布消息
    pub.sendMessage('nameEvntTopic', ['NewName', 'Age'])
    
    #事件没有被注册时候,统一转到该函数处理
    def onTopicNeverCreated(eventTopicData):
        print eventTopicData
    
    #发布一个不存在的事件
    pub.sendMessage('NoneEvntTopic', ['NewName', 'Age'], onTopicNeverCreated)

    运行结果:

    You can not give me a new name as my name is  NameA
    I change name to  ['NewName', 'Age']
    ('NoneEvntTopic',)
  • 相关阅读:
    03、CPU主频,和性能
    02、计算机组成原理相关知识
    常用正则表达式,手机号、固话号、身份证号等
    01、计算机原理结构,及冯诺依曼体系结构
    7-7 Complete Binary Search Tree (30分) 完全二叉搜索树
    7-2 Reversing Linked List (25分)
    7-1 Maximum Subsequence Sum (25分)
    6-17 Shortest Path [4] (25分)
    6-16 Shortest Path [3] (25分)
    6-15 Iterative Mergesort (25分)
  • 原文地址:https://www.cnblogs.com/ankier/p/2857648.html
Copyright © 2011-2022 走看看