VNPY 的EVENT事件作為 pyQT5的訊號觸發函式
最近在做vnpy的一些介面修改,裡面很多要做內容就是按照Event事件,作為pyqt5訊號,來觸發訊號槽函式。
簡單介紹下pyqt5的訊號和訊號槽,訊號是就是QtCore.pyqtSignal類的實例項物件。訊號有個emit() 方法,當emit執行時候,相當於觸發訊號,啟用對應的訊號槽。訊號槽就是對應函式,將會被操作。介面按鈕點選或者螢幕雙擊,都是一些原生的訊號事件,直接呼叫就是可以,至於更多相關內容可以網上找找資料。
我們這裡說的是當VNPY的EVENT事件做為pyQT5訊號,觸發對應訊號槽函式。
比如一筆的成交,在vnpy中定義好一個成交事件
EVENT_CTA_TRADE = 'eCtaTrade'
此時,這裡在建立是對應的訊號例項,引數型別是Event。然後把這個訊號傳送函式和event繫結,程式碼如下
signal_trade_strategy = QtCore.pyqtSignal(Event)
event_engine.register( EVENT_CTA_TRADE, signal_trade_strategy.emit )
這個時候需要定義對應的訊號槽,如果process_cta_trade_event是處理函式,定義如下
self.signal_trade_strategy.connect(process_cta_trade_event)
在處理函式中,Event 事件可以作為引數直接獲取。之後可以做為內容更新
process_cta_trade_event(, event): data = event.data
這裡沒有什麼難點,如果訊號槽事件不觸及pyqt5 的UI 繪製的化,其實直接在EVENT繫結時候直接繫結訊號槽函式。
但是如果訊號槽事件涉及到UI繪製的化,必須要用自定義pyqt5訊號,因為UI更新繪製是一個子執行緒,如果整個VNPY是作為子執行緒執行,比如用child模式,子執行緒定時觸發執行,那麼就會報錯下面錯誤。唯一要注意地方。
QObject::connect: Cannot queue arguments of type 'QVector<int>'
(Make sure 'QVector<int>' is registered using qRegisterMetaType().)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22259926/viewspace-2795399/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- withoutEvents函式裡面的事件被觸發函式事件
- js程式碼觸發事件 函式列表JS事件函式
- 介紹下VNPY的Event事件處理,和建立新事件型別事件型別
- 物件,函式作為一個函式的引數物件函式
- pyqt5中訊號與槽的認識QT
- ruby **option作為函式引數,map的key必須是符號函式符號
- Qt5的訊號和槽函式QT函式
- 有趣的觸發器事件觸發器事件
- js函式作為函式的引數程式碼例項JS函式
- javascript 事件觸發以後函式指定時間後再執行JavaScript事件函式
- WebAPIs-06:動畫函式封裝 + 觸屏事件WebAPI動畫函式封裝事件
- C#的Replace函式,使用函式作為的引數需要注意C#函式
- WebSocket的事件觸發機制Web事件
- [翻譯]整合滑鼠、觸控 和觸控筆事件的Html5 Pointer Event Api事件HTMLAPI
- Android觸控事件(下)——事件的分發Android事件
- JavaScipt中作為一等公民的函式Java函式
- 如何為新增的元素註冊事件處理函式事件函式
- 取消事件觸發事件
- 第六章——函式(函式作為代理)函式
- touch事件和click事件多次觸發的問題事件
- 聊一下Button事件、命令、行為的觸發順序事件
- 解析Linux訊號集操作函式Linux函式
- 訊號量函式 semget() semop() semctl()函式
- 將使用回撥函式作為引數的函式改造為返回 Promise 的一個具體例子函式Promise
- 企圖為vuex新增發布訂閱:事件繫結和事件觸發Vue事件
- 使用oracle utl_raw作為dump的逆函式Oracle函式
- 函式作為引數傳遞函式
- 無伺服器與事件溯源結合的演示案例:將事件溯源作為Azure函式的資料持久化機制的庫伺服器事件函式持久化
- 回撥函式、訊息和事件例程 (轉)函式事件
- javascript如何獲取觸發事件的物件JavaScript事件物件
- HTML事件的控制元件觸發 (轉)HTML事件控制元件
- 通過程式碼控制View的觸控事件被觸發View事件
- 語音訊號處理獲取 NFFT 的自定義函式音訊FFT函式
- C語言kill()函式:傳送訊號給指定的程式C語言函式
- “全”事件觸發:阿里雲函式計算與事件匯流排產品完成全面深度整合事件阿里函式
- 七、函式-儲存過程-觸發器函式儲存過程觸發器
- QT之靜態函式傳送訊號QT函式
- 函式計算自動化運維實戰3 -- 事件觸發自動建立快照函式運維事件