Pyqt4 vnpy源码中关于GUI设计 1

一、介绍

最近在看vnpy源码,其中有pyqt4的设计部分,将其提取出来用于以后参考。有些属于vnpy自有模块可直接跳过不看。
其中QApplication应用对象主要用于启用qt应用,并判断界面关闭退出,Qt MainWindow主要用于qt布局。

二、代码

1、run.py(启动入口):创建了Qt MainWindow主窗口对象以及引入Qt QApplication应用对象

# encoding: UTF-8

# 重载sys模块,设置默认字符串编码方式为utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')

# vn.trader模块

# 事件引擎模块
from vnpy.event import EventEngine


from vnpy.trader.vtEngine import MainEngine
from vnpy.trader.uiQt import qApp
from vnpy.trader.uiMainWindow import MainWindow

# 加载底层接口
from vnpy.trader.gateway import ctpGateway

# 加载上层应用
from vnpy.trader.app import riskManager, ctaStrategy


#----------------------------------------------------------------------
def main():
    """主程序入口"""
    # 创建事件引擎
    ee = EventEngine()

    # 创建主引擎
    me = MainEngine(ee)

    # 添加交易接口
    me.addGateway(ctpGateway)

    # 添加上层应用
    me.addApp(riskManager)
    me.addApp(ctaStrategy)

    # 创建主窗口
    mw = MainWindow(me, ee)
    mw.showMaximized()

    # 在主线程中启动Qt事件循环
    # sys.exit 触发一个SystemExit异常用于退出时处理一些东西
    # 窗口退出
    sys.exit(qApp.exec_())


if __name__ == '__main__':
    main()

2、uiQt.py创建了Qt应用对象,并对其设置了些基本设置。

# encoding: UTF-8

# 获取操作系统信息模块
import platform

from qtpy import QtWidgets, QtGui, QtCore

from vnpy.trader.vtGlobal import globalSetting
from vnpy.trader.vtFunction import loadIconPath

# 创建Qt应用对象
qApp = QtWidgets.QApplication([])

# 设置Qt的皮肤
if globalSetting['darkStyle']:
    try:
        import qdarkstyle
        qApp.setStyleSheet(qdarkstyle.load_stylesheet(pyside=False))
    except ImportError:
        pass

# 设置Windows底部任务栏图标
if 'Windows' in platform.uname():
    # ctypes提供与C语言兼容数据类型,易于调用DLL中函数
    import ctypes
    ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID('vn.trader')  

# 设置Qt字体
try:
    family = globalSetting['fontFamily']
    size = globalSetting['fontSize']
    BASIC_FONT = QtGui.QFont(family, size)
except:
    BASIC_FONT = QtGui.QFont(u'微软雅黑', 12)
qApp.setFont(BASIC_FONT)

# 设置Qt图标
qApp.setWindowIcon(QtGui.QIcon(loadIconPath('vnpy.ico')))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值