class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.setEnabled(True) MainWindow.resize(913, 971) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(3) sizePolicy.setVerticalStretch(33) sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth()) MainWindow.setSizePolicy(sizePolicy) MainWindow.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu) MainWindow.setAutoFillBackground(True) MainWindow.setStyleSheet("") MainWindow.setAnimated(True) self.centralWidget = QtWidgets.QWidget(MainWindow) self.centralWidget.setObjectName("centralWidget") self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.centralWidget) self.verticalLayout_5.setObjectName("verticalLayout_5") self.tabWidget_PGMS = QtWidgets.QTabWidget(self.centralWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(20) sizePolicy.setVerticalStretch(44) sizePolicy.setHeightForWidth(self.tabWidget_PGMS.sizePolicy().hasHeightForWidth()) self.tabWidget_PGMS.setSizePolicy(sizePolicy) self.tabWidget_PGMS.setMinimumSize(QtCore.QSize(800, 700)) self.tabWidget_PGMS.setLayoutDirection(QtCore.Qt.LeftToRight) self.tabWidget_PGMS.setAutoFillBackground(True) self.tabWidget_PGMS.setStyleSheet("") self.tabWidget_PGMS.setTabBarAutoHide(True) self.tabWidget_PGMS.setObjectName("tabWidget_PGMS") self.tab_Combination = QtWidgets.QWidget() self.tab_Combination.setObjectName("tab_Combination") self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.tab_Combination) self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_6.setObjectName("horizontalLayout_6") self.scrollArea_3 = QtWidgets.QScrollArea(self.tab_Combination) self.scrollArea_3.setWidgetResizable(True) self.scrollArea_3.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) self.scrollArea_3.setObjectName("scrollArea_3") self.scrollAreaWidgetContents_3 = QtWidgets.QWidget() self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 852, 958)) self.scrollAreaWidgetContents_3.setObjectName("scrollAreaWidgetContents_3") self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_3) self.verticalLayout_8.setContentsMargins(0, 0, 0, 0) self.verticalLayout_8.setObjectName("verticalLayout_8") self.verticalLayout_6 = QtWidgets.QVBoxLayout() self.verticalLayout_6.setObjectName("verticalLayout_6") self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem) self.verticalLayout_7 = QtWidgets.QVBoxLayout() self.verticalLayout_7.setObjectName("verticalLayout_7") self.label_7 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) self.label_7.setText("") self.label_7.setObjectName("label_7") self.verticalLayout_7.addWidget(self.label_7) self.label_10 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_10.sizePolicy().hasHeightForWidth()) self.label_10.setSizePolicy(sizePolicy) self.label_10.setObjectName("label_10") self.verticalLayout_7.addWidget(self.label_10) self.label_11 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) self.label_11.setObjectName("label_11") self.verticalLayout_7.addWidget(self.label_11) self.label_12 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) self.label_12.setObjectName("label_12") self.verticalLayout_7.addWidget(self.label_12) self.horizontalLayout_3.addLayout(self.verticalLayout_7) spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.horizontalLayout_3.addItem(spacerItem1) self.gridLayout_5 = QtWidgets.QGridLayout() self.gridLayout_5.setObjectName("gridLayout_5") self.label_8 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) self.label_8.setObjectName("label_8") self.gridLayout_5.addWidget(self.label_8, 0, 0, 1, 1) self.label_9 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) self.label_9.setObjectName("label_9") self.gridLayout_5.addWidget(self.label_9, 0, 1, 1, 1) self.doubleSpinBox_returns_min = QtWidgets.QDoubleSpinBox(self.scrollAreaWidgetContents_3) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.doubleSpinBox_returns_min.sizePolicy().hasHeightForWidth()) self.doubleSpinBox_returns_min.setSizePolicy(sizePolicy) self.doubleSpinBox_returns_min.setMaximum(0.3) self.doubleSpinBox_returns_min.setSingleStep(0.01) self.doubleSpinBox_returns_min.setProperty("value", 0.0) self.doubleSpinBox_returns_min.setObjectName("doubleSpinBox_returns_min") self.gridLayout_5.addWidget(self.doubleSpinBox_returns_min, 1, 0, 1, 1) self.doubleSpinBox_returns_max = QtWidgets.QDoubleSpinBox(self.scrollAreaWidgetContents_3) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.doubleSpinBox_returns_max.sizePolicy().hasHeightForWidth()) self.doubleSpinBox_returns_max.setSizePolicy(sizePolicy) self.doubleSpinBox_returns_max.setMinimum(0.0) self.doubleSpinBox_returns_max.setMaximum(10.0) self.doubleSpinBox_returns_max.setSingleStep(0.1) self.doubleSpinBox_returns_max.setProperty("value", 0.0) self.doubleSpinBox_returns_max.setObjectName("doubleSpinBox_returns_max") self.gridLayout_5.addWidget(self.doubleSpinBox_returns_max, 1, 1, 1, 1) self.doubleSpinBox_maxdrawdown_min = QtWidgets.QDoubleSpinBox(self.scrollAreaWidgetContents_3) self.doubleSpinBox_maxdrawdown_min.setMinimum(0.1) self.doubleSpinBox_maxdrawdown_min.setMaximum(1.0) self.doubleSpinBox_maxdrawdown_min.setSingleStep(0.01) self.doubleSpinBox_maxdrawdown_min.setProperty("value", 0.7) self.doubleSpinBox_maxdrawdown_min.setObjectName("doubleSpinBox_maxdrawdown_min") self.gridLayout_5.addWidget(self.doubleSpinBox_maxdrawdown_min, 2, 0, 1, 1) self.doubleSpinBox_maxdrawdown_max = QtWidgets.QDoubleSpinBox(self.scrollAreaWidgetContents_3) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.doubleSpinBox_maxdrawdown_max.sizePolicy().hasHeightForWidth()) self.doubleSpinBox_maxdrawdown_max.setSizePolicy(sizePolicy) self.doubleSpinBox_maxdrawdown_max.setMinimum(0.2) self.doubleSpinBox_maxdrawdown_max.setMaximum(1.0) self.doubleSpinBox_maxdrawdown_max.setSingleStep(0.01) self.doubleSpinBox_maxdrawdown_max.setProperty("value", 1.0) self.doubleSpinBox_maxdrawdown_max.setObjectName("doubleSpinBox_maxdrawdown_max") self.gridLayout_5.addWidget(self.doubleSpinBox_maxdrawdown_max, 2, 1, 1, 1) self.doubleSpinBox_sharp_min = QtWidgets.QDoubleSpinBox(self.scrollAreaWidgetContents_3) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.doubleSpinBox_sharp_min.sizePolicy().hasHeightForWidth()) self.doubleSpinBox_sharp_min.setSizePolicy(sizePolicy) self.doubleSpinBox_sharp_min.setMaximum(40.0) self.doubleSpinBox_sharp_min.setSingleStep(0.05) self.doubleSpinBox_sharp_min.setObjectName("doubleSpinBox_sharp_min") self.gridLayout_5.addWidget(self.doubleSpinBox_sharp_min, 3, 0, 1, 1) self.doubleSpinBox_sharp_max = QtWidgets.QDoubleSpinBox(self.scrollAreaWidgetContents_3) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.doubleSpinBox_sharp_max.sizePolicy().hasHeightForWidth()) self.doubleSpinBox_sharp_max.setSizePolicy(sizePolicy) self.doubleSpinBox_sharp_max.setProperty("value", 10.0) self.doubleSpinBox_sharp_max.setObjectName("doubleSpinBox_sharp_max") self.gridLayout_5.addWidget(self.doubleSpinBox_sharp_max, 3, 1, 1, 1) self.horizontalLayout_3.addLayout(self.gridLayout_5) self.line_2 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) self.line_2.setFrameShape(QtWidgets.QFrame.VLine) self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_2.setObjectName("line_2") self.horizontalLayout_3.addWidget(self.line_2) spacerItem2 = QtWidgets.QSpacerItem(200, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem2) self.pushButton_start_combination = QtWidgets.QPushButton(self.scrollAreaWidgetContents_3) self.pushButton_start_combination.setObjectName("pushButton_start_combination") self.horizontalLayout_3.addWidget(self.pushButton_start_combination) spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem3) self.verticalLayout_6.addLayout(self.horizontalLayout_3) self.horizontalLayout_7 = QtWidgets.QHBoxLayout() self.horizontalLayout_7.setObjectName("horizontalLayout_7") self.checkBox_stock = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3) self.checkBox_stock.setObjectName("checkBox_stock") self.horizontalLayout_7.addWidget(self.checkBox_stock) self.checkBox_compound = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3) self.checkBox_compound.setObjectName("checkBox_compound") self.horizontalLayout_7.addWidget(self.checkBox_compound) self.checkBox_future_manage = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3) self.checkBox_future_manage.setObjectName("checkBox_future_manage") self.horizontalLayout_7.addWidget(self.checkBox_future_manage) self.checkBox_event = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3) self.checkBox_event.setObjectName("checkBox_event") self.horizontalLayout_7.addWidget(self.checkBox_event) self.checkBox_bond = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3) self.checkBox_bond.setObjectName("checkBox_bond") self.horizontalLayout_7.addWidget(self.checkBox_bond) self.checkBox_macro = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3) self.checkBox_macro.setObjectName("checkBox_macro") self.horizontalLayout_7.addWidget(self.checkBox_macro) self.checkBox_combination_fund = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3) self.checkBox_combination_fund.setObjectName("checkBox_combination_fund") self.horizontalLayout_7.addWidget(self.checkBox_combination_fund) self.checkBox_relative_fund = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3) self.checkBox_relative_fund.setObjectName("checkBox_relative_fund") self.horizontalLayout_7.addWidget(self.checkBox_relative_fund) self.checkBox_others = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3) self.checkBox_others.setObjectName("checkBox_others") self.horizontalLayout_7.addWidget(self.checkBox_others) self.verticalLayout_6.addLayout(self.horizontalLayout_7) self.verticalLayout_8.addLayout(self.verticalLayout_6) self.QWebEngineview_Combination_monte_markovitz = QWebEngineView(self.scrollAreaWidgetContents_3) self.QWebEngineview_Combination_monte_markovitz.setMinimumSize(QtCore.QSize(0, 300)) self.QWebEngineview_Combination_monte_markovitz.setStyleSheet("background-color: rgb(170, 170, 127);") self.QWebEngineview_Combination_monte_markovitz.setObjectName("QWebEngineview_Combination_monte_markovitz") self.verticalLayout_8.addWidget(self.QWebEngineview_Combination_monte_markovitz) self.horizontalLayout_5 = QtWidgets.QHBoxLayout() self.horizontalLayout_5.setObjectName("horizontalLayout_5") self.QWebEngineview_Combination_Pie = QWebEngineView(self.scrollAreaWidgetContents_3) self.QWebEngineview_Combination_Pie.setMinimumSize(QtCore.QSize(50, 200)) self.QWebEngineview_Combination_Pie.setStyleSheet("background-color: rgb(170, 170, 127);") self.QWebEngineview_Combination_Pie.setObjectName("QWebEngineview_Combination_Pie") self.horizontalLayout_5.addWidget(self.QWebEngineview_Combination_Pie) self.QWebEngineview_Combination_Table = QWebEngineView(self.scrollAreaWidgetContents_3) self.QWebEngineview_Combination_Table.setMinimumSize(QtCore.QSize(0, 200)) self.QWebEngineview_Combination_Table.setStyleSheet("background-color: rgb(170, 170, 127);") self.QWebEngineview_Combination_Table.setObjectName("QWebEngineview_Combination_Table") self.horizontalLayout_5.addWidget(self.QWebEngineview_Combination_Table) self.verticalLayout_8.addLayout(self.horizontalLayout_5) self.QWebEngineview_Combination_Versus = QWebEngineView(self.scrollAreaWidgetContents_3) self.QWebEngineview_Combination_Versus.setEnabled(True) self.QWebEngineview_Combination_Versus.setMinimumSize(QtCore.QSize(0, 300)) self.QWebEngineview_Combination_Versus.setStyleSheet("background-color: rgb(170, 170, 127);") self.QWebEngineview_Combination_Versus.setObjectName("QWebEngineview_Combination_Versus") self.verticalLayout_8.addWidget(self.QWebEngineview_Combination_Versus) self.QWebEngineview_Combination_monte_markovitz.raise_() self.QWebEngineview_Combination_Versus.raise_() self.scrollArea_3.setWidget(self.scrollAreaWidgetContents_3) self.horizontalLayout_6.addWidget(self.scrollArea_3) self.tabWidget_PGMS.addTab(self.tab_Combination, "") self.verticalLayout_5.addWidget(self.tabWidget_PGMS) MainWindow.setCentralWidget(self.centralWidget) self.menuBar = QtWidgets.QMenuBar(MainWindow) self.menuBar.setGeometry(QtCore.QRect(0, 0, 913, 23)) self.menuBar.setObjectName("menuBar") MainWindow.setMenuBar(self.menuBar) self.action = QtWidgets.QAction(MainWindow) self.action.setObjectName("action") self.action_2 = QtWidgets.QAction(MainWindow) self.action_2.setObjectName("action_2") self.action_3 = QtWidgets.QAction(MainWindow) self.action_3.setObjectName("action_3") self.action_4 = QtWidgets.QAction(MainWindow) self.action_4.setObjectName("action_4") self.action_5 = QtWidgets.QAction(MainWindow) self.action_5.setObjectName("action_5") self.action_6 = QtWidgets.QAction(MainWindow) self.action_6.setObjectName("action_6") self.action_8 = QtWidgets.QAction(MainWindow) self.action_8.setObjectName("action_8") self.action_9 = QtWidgets.QAction(MainWindow) self.action_9.setObjectName("action_9") self.action_10 = QtWidgets.QAction(MainWindow) self.action_10.setObjectName("action_10") self.action_11 = QtWidgets.QAction(MainWindow) self.action_11.setObjectName("action_11") self.action_Qt = QtWidgets.QAction(MainWindow) self.action_Qt.setObjectName("action_Qt") self.action_PyQt = QtWidgets.QAction(MainWindow) self.action_PyQt.setObjectName("action_PyQt") self.action_12 = QtWidgets.QAction(MainWindow) self.action_12.setObjectName("action_12") self.retranslateUi(MainWindow) self.tabWidget_PGMS.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "基金量化投研系统v0.11")) self.label_10.setText(_translate("MainWindow", "收益")) self.label_11.setText(_translate("MainWindow", "最大回撤")) self.label_12.setText(_translate("MainWindow", "Sharp比")) self.label_8.setText(_translate("MainWindow", "最小范围")) self.label_9.setText(_translate("MainWindow", "最大范围")) self.pushButton_start_combination.setText(_translate("MainWindow", "开始")) self.checkBox_stock.setText(_translate("MainWindow", "股票策略")) self.checkBox_compound.setText(_translate("MainWindow", "复合策略")) self.checkBox_future_manage.setText(_translate("MainWindow", "管理期货")) self.checkBox_event.setText(_translate("MainWindow", "事件驱动")) self.checkBox_bond.setText(_translate("MainWindow", "债券策略")) self.checkBox_macro.setText(_translate("MainWindow", "宏观策略")) self.checkBox_combination_fund.setText(_translate("MainWindow", "组合基金")) self.checkBox_relative_fund.setText(_translate("MainWindow", "相对价值")) self.checkBox_others.setText(_translate("MainWindow", "其它策略")) self.tabWidget_PGMS.setTabText(self.tabWidget_PGMS.indexOf(self.tab_Combination), _translate("MainWindow", "产品组合管理")) self.action.setText(_translate("MainWindow", "打开")) self.action_2.setText(_translate("MainWindow", "关闭")) self.action_3.setText(_translate("MainWindow", "保存")) self.action_4.setText(_translate("MainWindow", "退出")) self.action_5.setText(_translate("MainWindow", "复制")) self.action_6.setText(_translate("MainWindow", "黏贴")) self.action_8.setText(_translate("MainWindow", "哈哈")) self.action_9.setText(_translate("MainWindow", "关于")) self.action_10.setText(_translate("MainWindow", "使用说明")) self.action_11.setText(_translate("MainWindow", "关于软件")) self.action_Qt.setText(_translate("MainWindow", "关于Qt")) self.action_PyQt.setText(_translate("MainWindow", "关于PyQt")) self.action_12.setText(_translate("MainWindow", "其他"))
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.setEnabled(True) MainWindow.resize(913, 971) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(3) sizePolicy.setVerticalStretch(33) sizePolicy.setHeightForWidth( MainWindow.sizePolicy().hasHeightForWidth()) MainWindow.setSizePolicy(sizePolicy) MainWindow.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu) MainWindow.setAutoFillBackground(True) MainWindow.setStyleSheet("") MainWindow.setAnimated(True) self.centralWidget = QtWidgets.QWidget(MainWindow) self.centralWidget.setObjectName("centralWidget") self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.centralWidget) self.verticalLayout_5.setObjectName("verticalLayout_5") self.tabWidget_PGMS = QtWidgets.QTabWidget(self.centralWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(20) sizePolicy.setVerticalStretch(44) sizePolicy.setHeightForWidth( self.tabWidget_PGMS.sizePolicy().hasHeightForWidth()) self.tabWidget_PGMS.setSizePolicy(sizePolicy) self.tabWidget_PGMS.setMinimumSize(QtCore.QSize(800, 700)) self.tabWidget_PGMS.setLayoutDirection(QtCore.Qt.LeftToRight) self.tabWidget_PGMS.setAutoFillBackground(True) self.tabWidget_PGMS.setStyleSheet("") self.tabWidget_PGMS.setTabBarAutoHide(True) self.tabWidget_PGMS.setObjectName("tabWidget_PGMS") self.tab_Combination = QtWidgets.QWidget() self.tab_Combination.setObjectName("tab_Combination") self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.tab_Combination) self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_6.setObjectName("horizontalLayout_6") self.scrollArea_3 = QtWidgets.QScrollArea(self.tab_Combination) self.scrollArea_3.setWidgetResizable(True) self.scrollArea_3.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.scrollArea_3.setObjectName("scrollArea_3") self.scrollAreaWidgetContents_3 = QtWidgets.QWidget() self.scrollAreaWidgetContents_3.setGeometry( QtCore.QRect(0, 0, 852, 958)) self.scrollAreaWidgetContents_3.setObjectName( "scrollAreaWidgetContents_3") self.verticalLayout_8 = QtWidgets.QVBoxLayout( self.scrollAreaWidgetContents_3) self.verticalLayout_8.setContentsMargins(0, 0, 0, 0) self.verticalLayout_8.setObjectName("verticalLayout_8") self.verticalLayout_6 = QtWidgets.QVBoxLayout() self.verticalLayout_6.setObjectName("verticalLayout_6") self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem) self.verticalLayout_7 = QtWidgets.QVBoxLayout() self.verticalLayout_7.setObjectName("verticalLayout_7") self.label_7 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) self.label_7.setText("") self.label_7.setObjectName("label_7") self.verticalLayout_7.addWidget(self.label_7) self.label_10 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.label_10.sizePolicy().hasHeightForWidth()) self.label_10.setSizePolicy(sizePolicy) self.label_10.setObjectName("label_10") self.verticalLayout_7.addWidget(self.label_10) self.label_11 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) self.label_11.setObjectName("label_11") self.verticalLayout_7.addWidget(self.label_11) self.label_12 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) self.label_12.setObjectName("label_12") self.verticalLayout_7.addWidget(self.label_12) self.horizontalLayout_3.addLayout(self.verticalLayout_7) spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.horizontalLayout_3.addItem(spacerItem1) self.gridLayout_5 = QtWidgets.QGridLayout() self.gridLayout_5.setObjectName("gridLayout_5") self.label_8 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) self.label_8.setObjectName("label_8") self.gridLayout_5.addWidget(self.label_8, 0, 0, 1, 1) self.label_9 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3) self.label_9.setObjectName("label_9") self.gridLayout_5.addWidget(self.label_9, 0, 1, 1, 1) self.doubleSpinBox_returns_min = QtWidgets.QDoubleSpinBox( self.scrollAreaWidgetContents_3) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.doubleSpinBox_returns_min.sizePolicy().hasHeightForWidth()) self.doubleSpinBox_returns_min.setSizePolicy(sizePolicy) self.doubleSpinBox_returns_min.setMaximum(0.3) self.doubleSpinBox_returns_min.setSingleStep(0.01) self.doubleSpinBox_returns_min.setProperty("value", 0.0) self.doubleSpinBox_returns_min.setObjectName( "doubleSpinBox_returns_min") self.gridLayout_5.addWidget(self.doubleSpinBox_returns_min, 1, 0, 1, 1) self.doubleSpinBox_returns_max = QtWidgets.QDoubleSpinBox( self.scrollAreaWidgetContents_3) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.doubleSpinBox_returns_max.sizePolicy().hasHeightForWidth()) self.doubleSpinBox_returns_max.setSizePolicy(sizePolicy) self.doubleSpinBox_returns_max.setMinimum(0.0) self.doubleSpinBox_returns_max.setMaximum(10.0) self.doubleSpinBox_returns_max.setSingleStep(0.1) self.doubleSpinBox_returns_max.setProperty("value", 0.0) self.doubleSpinBox_returns_max.setObjectName( "doubleSpinBox_returns_max") self.gridLayout_5.addWidget(self.doubleSpinBox_returns_max, 1, 1, 1, 1) self.doubleSpinBox_maxdrawdown_min = QtWidgets.QDoubleSpinBox( self.scrollAreaWidgetContents_3) self.doubleSpinBox_maxdrawdown_min.setMinimum(0.1) self.doubleSpinBox_maxdrawdown_min.setMaximum(1.0) self.doubleSpinBox_maxdrawdown_min.setSingleStep(0.01) self.doubleSpinBox_maxdrawdown_min.setProperty("value", 0.7) self.doubleSpinBox_maxdrawdown_min.setObjectName( "doubleSpinBox_maxdrawdown_min") self.gridLayout_5.addWidget(self.doubleSpinBox_maxdrawdown_min, 2, 0, 1, 1) self.doubleSpinBox_maxdrawdown_max = QtWidgets.QDoubleSpinBox( self.scrollAreaWidgetContents_3) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.doubleSpinBox_maxdrawdown_max. sizePolicy().hasHeightForWidth()) self.doubleSpinBox_maxdrawdown_max.setSizePolicy(sizePolicy) self.doubleSpinBox_maxdrawdown_max.setMinimum(0.2) self.doubleSpinBox_maxdrawdown_max.setMaximum(1.0) self.doubleSpinBox_maxdrawdown_max.setSingleStep(0.01) self.doubleSpinBox_maxdrawdown_max.setProperty("value", 1.0) self.doubleSpinBox_maxdrawdown_max.setObjectName( "doubleSpinBox_maxdrawdown_max") self.gridLayout_5.addWidget(self.doubleSpinBox_maxdrawdown_max, 2, 1, 1, 1) self.doubleSpinBox_sharp_min = QtWidgets.QDoubleSpinBox( self.scrollAreaWidgetContents_3) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.doubleSpinBox_sharp_min.sizePolicy().hasHeightForWidth()) self.doubleSpinBox_sharp_min.setSizePolicy(sizePolicy) self.doubleSpinBox_sharp_min.setMaximum(40.0) self.doubleSpinBox_sharp_min.setSingleStep(0.05) self.doubleSpinBox_sharp_min.setObjectName("doubleSpinBox_sharp_min") self.gridLayout_5.addWidget(self.doubleSpinBox_sharp_min, 3, 0, 1, 1) self.doubleSpinBox_sharp_max = QtWidgets.QDoubleSpinBox( self.scrollAreaWidgetContents_3) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.doubleSpinBox_sharp_max.sizePolicy().hasHeightForWidth()) self.doubleSpinBox_sharp_max.setSizePolicy(sizePolicy) self.doubleSpinBox_sharp_max.setProperty("value", 10.0) self.doubleSpinBox_sharp_max.setObjectName("doubleSpinBox_sharp_max") self.gridLayout_5.addWidget(self.doubleSpinBox_sharp_max, 3, 1, 1, 1) self.horizontalLayout_3.addLayout(self.gridLayout_5) self.line_2 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3) self.line_2.setFrameShape(QtWidgets.QFrame.VLine) self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_2.setObjectName("line_2") self.horizontalLayout_3.addWidget(self.line_2) spacerItem2 = QtWidgets.QSpacerItem(200, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem2) self.pushButton_start_combination = QtWidgets.QPushButton( self.scrollAreaWidgetContents_3) self.pushButton_start_combination.setObjectName( "pushButton_start_combination") self.horizontalLayout_3.addWidget(self.pushButton_start_combination) spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem3) self.verticalLayout_6.addLayout(self.horizontalLayout_3) self.horizontalLayout_7 = QtWidgets.QHBoxLayout() self.horizontalLayout_7.setObjectName("horizontalLayout_7") self.checkBox_stock = QtWidgets.QCheckBox( self.scrollAreaWidgetContents_3) self.checkBox_stock.setObjectName("checkBox_stock") self.horizontalLayout_7.addWidget(self.checkBox_stock) self.checkBox_compound = QtWidgets.QCheckBox( self.scrollAreaWidgetContents_3) self.checkBox_compound.setObjectName("checkBox_compound") self.horizontalLayout_7.addWidget(self.checkBox_compound) self.checkBox_future_manage = QtWidgets.QCheckBox( self.scrollAreaWidgetContents_3) self.checkBox_future_manage.setObjectName("checkBox_future_manage") self.horizontalLayout_7.addWidget(self.checkBox_future_manage) self.checkBox_event = QtWidgets.QCheckBox( self.scrollAreaWidgetContents_3) self.checkBox_event.setObjectName("checkBox_event") self.horizontalLayout_7.addWidget(self.checkBox_event) self.checkBox_bond = QtWidgets.QCheckBox( self.scrollAreaWidgetContents_3) self.checkBox_bond.setObjectName("checkBox_bond") self.horizontalLayout_7.addWidget(self.checkBox_bond) self.checkBox_macro = QtWidgets.QCheckBox( self.scrollAreaWidgetContents_3) self.checkBox_macro.setObjectName("checkBox_macro") self.horizontalLayout_7.addWidget(self.checkBox_macro) self.checkBox_combination_fund = QtWidgets.QCheckBox( self.scrollAreaWidgetContents_3) self.checkBox_combination_fund.setObjectName( "checkBox_combination_fund") self.horizontalLayout_7.addWidget(self.checkBox_combination_fund) self.checkBox_relative_fund = QtWidgets.QCheckBox( self.scrollAreaWidgetContents_3) self.checkBox_relative_fund.setObjectName("checkBox_relative_fund") self.horizontalLayout_7.addWidget(self.checkBox_relative_fund) self.checkBox_others = QtWidgets.QCheckBox( self.scrollAreaWidgetContents_3) self.checkBox_others.setObjectName("checkBox_others") self.horizontalLayout_7.addWidget(self.checkBox_others) self.verticalLayout_6.addLayout(self.horizontalLayout_7) self.verticalLayout_8.addLayout(self.verticalLayout_6) self.QWebEngineview_Combination_monte_markovitz = QWebEngineView( self.scrollAreaWidgetContents_3) self.QWebEngineview_Combination_monte_markovitz.setMinimumSize( QtCore.QSize(0, 300)) self.QWebEngineview_Combination_monte_markovitz.setStyleSheet( "background-color: rgb(170, 170, 127);") self.QWebEngineview_Combination_monte_markovitz.setObjectName( "QWebEngineview_Combination_monte_markovitz") self.verticalLayout_8.addWidget( self.QWebEngineview_Combination_monte_markovitz) self.horizontalLayout_5 = QtWidgets.QHBoxLayout() self.horizontalLayout_5.setObjectName("horizontalLayout_5") self.QWebEngineview_Combination_Pie = QWebEngineView( self.scrollAreaWidgetContents_3) self.QWebEngineview_Combination_Pie.setMinimumSize( QtCore.QSize(50, 200)) self.QWebEngineview_Combination_Pie.setStyleSheet( "background-color: rgb(170, 170, 127);") self.QWebEngineview_Combination_Pie.setObjectName( "QWebEngineview_Combination_Pie") self.horizontalLayout_5.addWidget(self.QWebEngineview_Combination_Pie) self.QWebEngineview_Combination_Table = QWebEngineView( self.scrollAreaWidgetContents_3) self.QWebEngineview_Combination_Table.setMinimumSize( QtCore.QSize(0, 200)) self.QWebEngineview_Combination_Table.setStyleSheet( "background-color: rgb(170, 170, 127);") self.QWebEngineview_Combination_Table.setObjectName( "QWebEngineview_Combination_Table") self.horizontalLayout_5.addWidget( self.QWebEngineview_Combination_Table) self.verticalLayout_8.addLayout(self.horizontalLayout_5) self.QWebEngineview_Combination_Versus = QWebEngineView( self.scrollAreaWidgetContents_3) self.QWebEngineview_Combination_Versus.setEnabled(True) self.QWebEngineview_Combination_Versus.setMinimumSize( QtCore.QSize(0, 300)) self.QWebEngineview_Combination_Versus.setStyleSheet( "background-color: rgb(170, 170, 127);") self.QWebEngineview_Combination_Versus.setObjectName( "QWebEngineview_Combination_Versus") self.verticalLayout_8.addWidget(self.QWebEngineview_Combination_Versus) self.QWebEngineview_Combination_monte_markovitz.raise_() self.QWebEngineview_Combination_Versus.raise_() self.scrollArea_3.setWidget(self.scrollAreaWidgetContents_3) self.horizontalLayout_6.addWidget(self.scrollArea_3) self.tabWidget_PGMS.addTab(self.tab_Combination, "") self.verticalLayout_5.addWidget(self.tabWidget_PGMS) MainWindow.setCentralWidget(self.centralWidget) self.menuBar = QtWidgets.QMenuBar(MainWindow) self.menuBar.setGeometry(QtCore.QRect(0, 0, 913, 23)) self.menuBar.setObjectName("menuBar") MainWindow.setMenuBar(self.menuBar) self.action = QtWidgets.QAction(MainWindow) self.action.setObjectName("action") self.action_2 = QtWidgets.QAction(MainWindow) self.action_2.setObjectName("action_2") self.action_3 = QtWidgets.QAction(MainWindow) self.action_3.setObjectName("action_3") self.action_4 = QtWidgets.QAction(MainWindow) self.action_4.setObjectName("action_4") self.action_5 = QtWidgets.QAction(MainWindow) self.action_5.setObjectName("action_5") self.action_6 = QtWidgets.QAction(MainWindow) self.action_6.setObjectName("action_6") self.action_8 = QtWidgets.QAction(MainWindow) self.action_8.setObjectName("action_8") self.action_9 = QtWidgets.QAction(MainWindow) self.action_9.setObjectName("action_9") self.action_10 = QtWidgets.QAction(MainWindow) self.action_10.setObjectName("action_10") self.action_11 = QtWidgets.QAction(MainWindow) self.action_11.setObjectName("action_11") self.action_Qt = QtWidgets.QAction(MainWindow) self.action_Qt.setObjectName("action_Qt") self.action_PyQt = QtWidgets.QAction(MainWindow) self.action_PyQt.setObjectName("action_PyQt") self.action_12 = QtWidgets.QAction(MainWindow) self.action_12.setObjectName("action_12") self.retranslateUi(MainWindow) self.tabWidget_PGMS.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "基金量化投研系統v0.11")) self.label_10.setText(_translate("MainWindow", "收益")) self.label_11.setText(_translate("MainWindow", "最大回撤")) self.label_12.setText(_translate("MainWindow", "Sharp比")) self.label_8.setText(_translate("MainWindow", "最小範圍")) self.label_9.setText(_translate("MainWindow", "最大範圍")) self.pushButton_start_combination.setText( _translate("MainWindow", "開始")) self.checkBox_stock.setText(_translate("MainWindow", "股票策略")) self.checkBox_compound.setText(_translate("MainWindow", "複合策略")) self.checkBox_future_manage.setText(_translate("MainWindow", "管理期貨")) self.checkBox_event.setText(_translate("MainWindow", "事件驅動")) self.checkBox_bond.setText(_translate("MainWindow", "債券策略")) self.checkBox_macro.setText(_translate("MainWindow", "宏觀策略")) self.checkBox_combination_fund.setText(_translate( "MainWindow", "組合基金")) self.checkBox_relative_fund.setText(_translate("MainWindow", "相對價值")) self.checkBox_others.setText(_translate("MainWindow", "其他策略")) self.tabWidget_PGMS.setTabText( self.tabWidget_PGMS.indexOf(self.tab_Combination), _translate("MainWindow", "產品組合管理")) self.action.setText(_translate("MainWindow", "開啟")) self.action_2.setText(_translate("MainWindow", "關閉")) self.action_3.setText(_translate("MainWindow", "儲存")) self.action_4.setText(_translate("MainWindow", "退出")) self.action_5.setText(_translate("MainWindow", "複製")) self.action_6.setText(_translate("MainWindow", "貼上")) self.action_8.setText(_translate("MainWindow", "哈哈")) self.action_9.setText(_translate("MainWindow", "關於")) self.action_10.setText(_translate("MainWindow", "使用說明")) self.action_11.setText(_translate("MainWindow", "關於軟體")) self.action_Qt.setText(_translate("MainWindow", "關於Qt")) self.action_PyQt.setText(_translate("MainWindow", "關於PyQt")) self.action_12.setText(_translate("MainWindow", "其他"))
class TimetrackerUI(AbstractUI): organization: Organization _widget: Optional[QWidget] calendar: QCalendarWidget progress: QProgressBar pb_download: QPushButton pb_close: QPushButton webview: QWebEngineView signal_progress = QtCore.pyqtSignal(int, int) signal_success = QtCore.pyqtSignal(str) signal_failure = QtCore.pyqtSignal(str) def __init__( self, context: AbstractContext, organization: Organization, helper: HelperType, qapp: QApplication, ): super().__init__(qapp, context) self.context = context self.organization = organization self.helper = helper self._widget = None def widget(self) -> QWidget: if not self._widget: self._widget = uic.loadUi( self.context.get_resource("ui/timetracker.ui")) self.pb_close = self._widget.findChild(QPushButton, "pbClose") self.pb_close.clicked.connect(self.pb_close_clicked) self.calendar = self._widget.findChild(QCalendarWidget, "calendar") self.calendar.setLocale( QLocale(QLocale.English, QLocale.UnitedKingdom)) self.progress = self._widget.findChild(QProgressBar, "progress") self.pb_download = self._widget.findChild(QPushButton, "pbDownload") self.pb_download.clicked.connect(self.pb_download_clicked) self.webview = QWebEngineView(self._widget) self._widget.layout().addWidget(self.webview) self.signal_success.connect(self.success) self.signal_progress.connect(self.show_progress) return self._widget def active(self, state): self.calendar.setEnabled(state) self.pb_close.setEnabled(state) self.pb_download.setEnabled(state) self.webview.setEnabled(state) def pb_download_clicked(self): self.active(False) self.context.show_status("Download in progress...") try: date = self.calendar.selectedDate().toPyDate() except Exception as e: logging.error(e) self.message_error("The date is incorrect") return TimetrackerTask(self, date).start() def success(self, html: str): self.active(True) self.webview.setHtml(html) self.context.clear_status() def show_progress(self, value: int, max_value: int): self.progress.setValue(value) self.progress.setMaximum(max_value)