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函式裡面的事件被觸發函式事件
- 介紹下VNPY的Event事件處理,和建立新事件型別事件型別
- PyQT5訊號與槽的連線QT
- Qt5的訊號和槽函式QT函式
- 【事件中心 Azure Event Hub】Event Hub日誌種發現的錯誤資訊解讀事件
- WebAPIs-06:動畫函式封裝 + 觸屏事件WebAPI動畫函式封裝事件
- pyqt5中訊號與槽的認識QT
- PyQt5自定義訊號QT
- PyQT5之多個訊號QT
- Item描述資訊的更改也會導致will trigger ORDERADM_H的update函式觸發函式
- touch事件和click事件多次觸發的問題事件
- 取消事件觸發事件
- PyQT5之自定義訊號QT
- “全”事件觸發:阿里雲函式計算與事件匯流排產品完成全面深度整合事件阿里函式
- 聊一下Button事件、命令、行為的觸發順序事件
- 解析Linux訊號集操作函式Linux函式
- 無伺服器與事件溯源結合的演示案例:將事件溯源作為Azure函式的資料持久化機制的庫伺服器事件函式持久化
- freeswitch的event事件處理事件
- 將使用回撥函式作為引數的函式改造為返回 Promise 的一個具體例子函式Promise
- 企圖為vuex新增發布訂閱:事件繫結和事件觸發Vue事件
- 函式計算自動化運維實戰3 -- 事件觸發自動建立快照函式運維事件
- MATLAB音訊訊號處理(一):函式簡易用法(audioread,sound函式)Matlab音訊函式
- jQuery select 觸發事件jQuery事件
- QObject Event( )customEvent( ) 函式區別Object函式
- 七、函式-儲存過程-觸發器函式儲存過程觸發器
- 如何使用原生的 JavaScript 程式碼,觸發 SAP UI5 按鈕控制元件的點選事件處理函式JavaScriptUI控制元件事件函式
- 函式作為引數傳遞函式
- Laravel 中的 Event 和事件的概念Laravel事件
- Python中將函式作為另一個函式的引數傳入並呼叫Python函式
- node中的事件環(Event Loop)事件OOP
- Unity觸控式螢幕觸控事件定義Unity事件
- 函式計算自動化運維實戰2 -- 事件觸發eip自動轉移函式運維事件
- 語音訊號處理獲取 NFFT 的自定義函式音訊FFT函式
- storage事件中的坑,storage.setItem()無法觸發storage事件事件
- python函式符號sympy的用法Python函式符號
- 在Qml 中定義訊號並如何觸發
- PyQT5之訊號關閉視窗QT
- PyQT5訊號重新整理時間QT