vnpy源码阅读学习(7):串在一起

栏目: IT技术 · 发布时间: 5年前

内容简介:我们已经分析了UI、MainEngine、EventEngine。然后他们几个是如何发挥作用的呢?我总结了一张图:我们来具体的看看UI部分是如何跟EventEngine穿插起来的

串在一起

我们已经分析了UI、MainEngine、EventEngine。然后他们几个是如何发挥作用的呢?我总结了一张图:

vnpy源码阅读学习(7):串在一起

我们来具体的看看UI部分是如何跟EventEngine穿插起来的

  1. \examples\vn_trader\run.py
def main():
    """"""
    qapp = create_qapp()
    event_engine = EventEngine()
    main_engine = MainEngine(event_engine)
    main_window = MainWindow(main_engine, event_engine)
  1. \vnpy\trader\ui\mainwindow.py
#在MainWindow中
def __init__(self, main_engine: MainEngine, event_engine: EventEngine):
    self.main_engine = main_engine
    self.event_engine = event_engine
    self.init_ui()

def init_ui(self):
    self.init_dock()

def init_dock(self):
        
    self.trading_widget, trading_dock = self.create_dock(
        TradingWidget, "交易", QtCore.Qt.LeftDockWidgetArea
    )

def create_dock(
        self, widget_class: QtWidgets.QWidget, name: str, area: int
    ):
       
    widget = widget_class(self.main_engine, self.event_engine)

从上述代码中我们可以看到widget在实例化的时候,传入了main_engine和event_engine

  1. \vnpy\trader\ui\widget.py
signal_tick = QtCore.pyqtSignal(Event)
    def __init__(self, main_engine: MainEngine, event_engine: EventEngine):
        
        super(TradingWidget, self).__init__()

        self.main_engine = main_engine
        self.event_engine = event_engine

        self.vt_symbol = ""

        self.init_ui()
        self.register_event()

    def register_event(self):
        self.signal_tick.connect(self.process_tick_event)
        self.event_engine.register(EVENT_TICK, self.signal_tick.emit)
    def process_tick_event(self, event: Event):
        """"""
        tick = event.data

我们已经看到一个窗体把一个回调函数 process_tick_event 注册给了 EventEngine 利用事件和插槽把整个系统连接在了一起,妙哉!

有了大概的框架,我们似乎都可以设计一个不断触发Event,然后一个UI框架,可以有多个窗体不断的相应这些事件。而且这些事件可以传递给多个订阅者窗体,且是通过多线程在游走于多个窗体。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Book of CSS3

The Book of CSS3

Peter Gasston / No Starch Press / 2011-5-13 / USD 34.95

CSS3 is the technology behind most of the eye-catching visuals on the Web today, but the official documentation can be dry and hard to follow. Luckily, The Book of CSS3 distills the heady technical la......一起来看看 《The Book of CSS3》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具