예제 #1
0
    def create_job_01_save_stock_day(self):
        # 🛠todo 继承QWidget , 写一个类, 里面有 进度条, checkbox ,和绑定到线程
        self.qCheckBoxJob01_save_stock_day = QtWidgets.QCheckBox(self)
        self.qCheckBoxJob01_save_stock_day.setText("JOB01 日线数据 📊")
        self.qProgressJob01_save_stock_day = QtWidgets.QProgressBar(self)
        self.qProgressJob01_save_stock_day.setMaximum(100)
        # 🛠todo  应该有更加好的实现方式, 把progress bar 绑定到 任务对象中,这样写实在是太粗糙了。
        # 把job 对象 绑定到界面中 , 继承 QCheckBox 把相关到对象线程 和 widget 绑定。
        self.job01_save_stock_day = QA_GUI_DateFetch_SU_job01_stock_day()

        self.job01_save_stock_day.setLoggingUIWidget(self.logDisplay)
        self.job01_save_stock_day.setProgressUIWidget(
            self.qProgressJob01_save_stock_day)
        self.job01_save_stock_day.setCheckboxUIWidget(
            self.qCheckBoxJob01_save_stock_day)

        self.job01_save_stock_day.connectSignalSlot()

        # 🛠todo 进一步封装 hardcode 1 2 3 不是一种好的的做法
        self.qCheckboxWidgetList.append(self.qCheckBoxJob01_save_stock_day)
        self.qProgressWidgetList.append(self.qProgressJob01_save_stock_day)
        self.allSubJobList.append(self.job01_save_stock_day)
        # 🛠todo 进一步封装 hardcode 1 2 3 不是一种好的的做法
        self.taskListLayout.addWidget(self.qCheckBoxJob01_save_stock_day)
        self.taskListLayout.addWidget(self.qProgressJob01_save_stock_day)
예제 #2
0
    def create_job_11_save_stock_transaction(self):

        self.qCheckBoxJob11_save_stock_transaction = QtWidgets.QCheckBox(self)
        self.qCheckBoxJob11_save_stock_transaction.setText(
            "JOB11 股票3秒的tick数据 📊")
        self.qProgressJob11_save_stock_transaction = QtWidgets.QProgressBar(
            self)
        self.qProgressJob11_save_stock_transaction.setMaximum(
            10000)  # 最小变动单位 0.01

        self.job11_save_stock_transaction = QA_GUI_DateFetch_SU_job11_stock_transaction(
        )

        self.job11_save_stock_transaction.setLoggingUIWidget(self.logDisplay)
        self.job11_save_stock_transaction.setProgressUIWidget(
            self.qProgressJob11_save_stock_transaction)
        self.job11_save_stock_transaction.setCheckboxUIWidget(
            self.qCheckBoxJob11_save_stock_transaction)

        self.job11_save_stock_transaction.connectSignalSlot()

        self.qCheckboxWidgetList.append(
            self.qCheckBoxJob11_save_stock_transaction)
        self.qProgressWidgetList.append(
            self.qProgressJob11_save_stock_transaction)
        self.allSubJobList.append(self.job11_save_stock_transaction)
        self.taskListLayout.addWidget(
            self.qCheckBoxJob11_save_stock_transaction)
        self.taskListLayout.addWidget(
            self.qProgressJob11_save_stock_transaction)
예제 #3
0
    def create_job_02_save_stock_xdxr(self):
        self.qCheckBoxJob02_save_stock_xdxr = QtWidgets.QCheckBox(self)
        self.qCheckBoxJob02_save_stock_xdxr.setText("JOB02 除权除息数据 📊")
        self.qProgressJob02_save_stock_xdxr = QtWidgets.QProgressBar(self)
        self.qProgressJob02_save_stock_xdxr.setMaximum(100)

        self.job02_save_stock_xdxr = QA_GUI_DateFetch_SU_job02_stock_xdxr()

        self.job02_save_stock_xdxr.setLoggingUIWidget(self.logDisplay)
        self.job02_save_stock_xdxr.setProgressUIWidget(
            self.qProgressJob02_save_stock_xdxr)
        self.job02_save_stock_xdxr.setCheckboxUIWidget(
            self.qCheckBoxJob02_save_stock_xdxr)

        self.job02_save_stock_xdxr.connectSignalSlot()

        self.qCheckboxWidgetList.append(self.qCheckBoxJob02_save_stock_xdxr)
        self.qProgressWidgetList.append(self.qProgressJob02_save_stock_xdxr)
        self.allSubJobList.append(self.job02_save_stock_xdxr)
        self.taskListLayout.addWidget(self.qCheckBoxJob02_save_stock_xdxr)
        self.taskListLayout.addWidget(self.qProgressJob02_save_stock_xdxr)
예제 #4
0
    def create_job_10_save_stock_info(self):
        self.qCheckBoxJob10_save_stock_info = QtWidgets.QCheckBox(self)
        self.qCheckBoxJob10_save_stock_info.setText("JOB10 股票基本数据 📊")
        self.qProgressJob10_save_stock_info = QtWidgets.QProgressBar(self)
        self.qProgressJob10_save_stock_info.setMaximum(10000)  # 最小变动单位 0.01

        self.job10_save_stock_info = QA_GUI_DateFetch_SU_job10_stock_info()

        self.job10_save_stock_info.setLoggingUIWidget(self.logDisplay)
        self.job10_save_stock_info.setProgressUIWidget(
            self.qProgressJob10_save_stock_info)
        self.job10_save_stock_info.setCheckboxUIWidget(
            self.qCheckBoxJob10_save_stock_info)

        self.job10_save_stock_info.connectSignalSlot()

        self.qCheckboxWidgetList.append(self.qCheckBoxJob10_save_stock_info)
        self.qProgressWidgetList.append(self.qProgressJob10_save_stock_info)
        self.allSubJobList.append(self.job10_save_stock_info)
        self.taskListLayout.addWidget(self.qCheckBoxJob10_save_stock_info)
        self.taskListLayout.addWidget(self.qProgressJob10_save_stock_info)
예제 #5
0
    def create_job_07_save_etf_min(self):
        self.qCheckBoxJob07_save_etf_min = QtWidgets.QCheckBox(self)
        self.qCheckBoxJob07_save_etf_min.setText("JOB07 ETF分钟数据 📊")
        self.qProgressJob07_save_etf_min = QtWidgets.QProgressBar(self)
        self.qProgressJob07_save_etf_min.setMaximum(10000)  # 最小变动单位 0.01

        self.job07_save_etf_min = QA_GUI_DateFetch_SU_job07_etf_min()

        self.job07_save_etf_min.setLoggingUIWidget(self.logDisplay)
        self.job07_save_etf_min.setProgressUIWidget(
            self.qProgressJob07_save_etf_min)
        self.job07_save_etf_min.setCheckboxUIWidget(
            self.qCheckBoxJob07_save_etf_min)

        self.job07_save_etf_min.connectSignalSlot()

        self.qCheckboxWidgetList.append(self.qCheckBoxJob07_save_etf_min)
        self.qProgressWidgetList.append(self.qProgressJob07_save_etf_min)
        self.allSubJobList.append(self.job07_save_etf_min)
        self.taskListLayout.addWidget(self.qCheckBoxJob07_save_etf_min)
        self.taskListLayout.addWidget(self.qProgressJob07_save_etf_min)
예제 #6
0
    def create_job_04_save_index_day(self):
        self.qCheckBoxJob04_save_index_day = QtWidgets.QCheckBox(self)
        self.qCheckBoxJob04_save_index_day.setText("JOB04 指数日线数据 📊")
        self.qProgressJob04_save_index_day = QtWidgets.QProgressBar(self)
        self.qProgressJob04_save_index_day.setMaximum(10000)  # 最小变动单位 0.01

        self.job04_save_index_day = QA_GUI_DateFetch_SU_job04_index_day()

        self.job04_save_index_day.setLoggingUIWidget(self.logDisplay)
        self.job04_save_index_day.setProgressUIWidget(
            self.qProgressJob04_save_index_day)
        self.job04_save_index_day.setCheckboxUIWidget(
            self.qCheckBoxJob04_save_index_day)

        self.job04_save_index_day.connectSignalSlot()

        self.qCheckboxWidgetList.append(self.qCheckBoxJob04_save_index_day)
        self.qProgressWidgetList.append(self.qProgressJob04_save_index_day)
        self.allSubJobList.append(self.job04_save_index_day)
        self.taskListLayout.addWidget(self.qCheckBoxJob04_save_index_day)
        self.taskListLayout.addWidget(self.qProgressJob04_save_index_day)
예제 #7
0
    def create_job01_save_stock_week(self):
        self.qCheckBoxJob01_save_stock_week = QtWidgets.QCheckBox(self)
        self.qCheckBoxJob01_save_stock_week.setText("JOB01 周线数据 📊")
        self.qProgressJob01_save_stock_week = QtWidgets.QProgressBar(self)
        self.qProgressJob01_save_stock_week.setMaximum(100)

        # 🛠todo 不知道为何,QThread 继承的 都不执行 __init__
        self.job01_save_stock_week = QA_GUI_DateFetch_SU_job01_stock_week()

        self.job01_save_stock_week.setLoggingUIWidget(self.logDisplay)
        self.job01_save_stock_week.setProgressUIWidget(
            self.qProgressJob01_save_stock_week)
        self.job01_save_stock_week.setCheckboxUIWidget(
            self.qCheckBoxJob01_save_stock_week)

        self.job01_save_stock_week.connectSignalSlot()

        self.qCheckboxWidgetList.append(self.qCheckBoxJob01_save_stock_week)
        self.qProgressWidgetList.append(self.qProgressJob01_save_stock_week)
        self.allSubJobList.append(self.job01_save_stock_week)
        self.taskListLayout.addWidget(self.qCheckBoxJob01_save_stock_week)
        self.taskListLayout.addWidget(self.qProgressJob01_save_stock_week)
예제 #8
0
    def init_ui(self):
        """"""
        self.setWindowTitle("pytdx载入")
        # self.setFixedWidth(600)

        self.setWindowFlags((self.windowFlags()
                             | QtCore.Qt.CustomizeWindowHint)
                            & ~QtCore.Qt.WindowMaximizeButtonHint)

        hbox_layout = QtWidgets.QHBoxLayout()

        load_button = QtWidgets.QPushButton("载入数据.to_db")
        load_button.clicked.connect(self.load_data)

        to_csv_button = QtWidgets.QPushButton("载入数据.to_csv")
        to_csv_button.clicked.connect(self.load_data)

        self.symbol_type = QtWidgets.QLineEdit("L8")

        self.symbol_combo = QtWidgets.QComboBox()
        self.exchange_combo = QtWidgets.QComboBox()
        for i in Exchange:
            self.exchange_combo.addItem(str(i.name), i)
        self.exchange_combo.activated[str].connect(self.onExchangeActivated)

        self.interval_combo = QtWidgets.QComboBox()
        for i in Interval:
            self.interval_combo.addItem(str(i.name), i)

        self.datetime_edit = QtWidgets.QLineEdit("Datetime")
        self.open_edit = QtWidgets.QLineEdit("Open")
        self.high_edit = QtWidgets.QLineEdit("High")
        self.low_edit = QtWidgets.QLineEdit("Low")
        self.close_edit = QtWidgets.QLineEdit("Close")
        self.volume_edit = QtWidgets.QLineEdit("Volume")
        self.open_interest_edit = QtWidgets.QLineEdit("OpenInterest")

        self.format_edit = QtWidgets.QLineEdit("%Y-%m-%d %H:%M:%S")

        info_label = QtWidgets.QLabel("合约信息")
        info_label.setAlignment(QtCore.Qt.AlignCenter)

        head_label = QtWidgets.QLabel("表头信息")
        head_label.setAlignment(QtCore.Qt.AlignCenter)

        format_label = QtWidgets.QLabel("格式信息")
        format_label.setAlignment(QtCore.Qt.AlignCenter)

        save_progress_label = QtWidgets.QLabel("保存进度信息")
        save_progress_label.setAlignment(QtCore.Qt.AlignCenter)

        save_progress_bar = QtWidgets.QProgressBar()
        save_progress_bar.setAlignment(QtCore.Qt.AlignCenter)
        self.progress_bar_dict['save_progress_bar'] = save_progress_bar

        form_left = QtWidgets.QFormLayout()
        form_left.addRow(QtWidgets.QLabel())
        form_left.addRow(info_label)
        form_left.addRow("交易所", self.exchange_combo)
        form_left.addRow("代码", self.symbol_combo)
        form_left.addRow("类型\n(L8主连/L9指数/2006)", self.symbol_type)
        form_left.addRow("周期", self.interval_combo)
        form_left.addRow(QtWidgets.QLabel())
        form_left.addRow(head_label)
        form_left.addRow("时间戳", self.datetime_edit)
        form_left.addRow("开盘价", self.open_edit)
        form_left.addRow("最高价", self.high_edit)
        form_left.addRow("最低价", self.low_edit)
        form_left.addRow("收盘价", self.close_edit)
        form_left.addRow("成交量", self.volume_edit)
        form_left.addRow("持仓量", self.open_interest_edit)
        form_left.addRow(QtWidgets.QLabel())
        form_left.addRow(format_label)
        form_left.addRow("时间格式", self.format_edit)
        form_left.addRow(QtWidgets.QLabel())
        form_left.addRow(save_progress_label)
        form_left.addRow(save_progress_bar)
        form_left.addRow(load_button)
        form_left.addRow(to_csv_button)
        form_left_widget = QtWidgets.QWidget()
        form_left_widget.setLayout(form_left)

        form_right_layout = QtWidgets.QFormLayout()
        # form_right_layout.addRow(QtWidgets.QLabel())
        # form_right_layout.addRow(info_label)
        # form_right_layout.addRow("交易所", self.exchange_combo)
        # form_right_layout.addRow("代码", self.symbol_combo)
        # form_right_layout.addRow("类型\n(L8主连/L9指数/2006)", self.symbol_type)
        # form_right_layout.addRow("周期", self.interval_combo)
        # form_right_layout.addRow(QtWidgets.QLabel())
        # form_right_layout.addRow(head_label)
        # form_right_layout.addRow("时间戳", self.datetime_edit)
        # form_right_layout.addRow("开盘价", self.open_edit)
        # form_right_layout.addRow("最高价", self.high_edit)
        # form_right_layout.addRow("最低价", self.low_edit)
        # form_right_layout.addRow("收盘价", self.close_edit)
        # form_right_layout.addRow("成交量", self.volume_edit)
        # form_right_layout.addRow("持仓量", self.open_interest_edit)
        form_right_widget = QtWidgets.QWidget()
        form_right_widget.setLayout(form_right_layout)

        hbox_layout.addStretch(1)
        hbox_layout.addWidget(form_left_widget)
        hbox_layout.addWidget(form_right_widget)

        self.setLayout(hbox_layout)
예제 #9
0
파일: widget.py 프로젝트: longfeiw07/jonpy
    def init_ui(self):
        """"""
        self.setWindowTitle("CSV载入")
        self.setFixedWidth(300)

        self.setWindowFlags(
            (self.windowFlags() | QtCore.Qt.CustomizeWindowHint)
            & ~QtCore.Qt.WindowMaximizeButtonHint)

        file_button = QtWidgets.QPushButton("选择文件")
        file_button.clicked.connect(self.select_file)

        file_dir_button = QtWidgets.QPushButton("选择文件夹")
        file_dir_button.clicked.connect(self.select_file_dir)

        load_button = QtWidgets.QPushButton("载入数据")
        load_button.clicked.connect(self.load_data)

        self.file_edit = QtWidgets.QLineEdit()
        self.symbol_edit = QtWidgets.QLineEdit()

        self.exchange_combo = QtWidgets.QComboBox()
        for i in Exchange:
            self.exchange_combo.addItem(str(i.name), i)

        self.interval_combo = QtWidgets.QComboBox()
        for i in Interval:
            self.interval_combo.addItem(str(i.name), i)

        self.datetime_edit = QtWidgets.QLineEdit("Datetime")
        self.open_edit = QtWidgets.QLineEdit("Open")
        self.high_edit = QtWidgets.QLineEdit("High")
        self.low_edit = QtWidgets.QLineEdit("Low")
        self.close_edit = QtWidgets.QLineEdit("Close")
        self.volume_edit = QtWidgets.QLineEdit("Volume")
        self.open_interest_edit = QtWidgets.QLineEdit("OpenInterest")

        self.format_edit = QtWidgets.QLineEdit("%Y-%m-%d %H:%M:%S")

        info_label = QtWidgets.QLabel("合约信息")
        info_label.setAlignment(QtCore.Qt.AlignCenter)

        head_label = QtWidgets.QLabel("表头信息")
        head_label.setAlignment(QtCore.Qt.AlignCenter)

        format_label = QtWidgets.QLabel("格式信息")
        format_label.setAlignment(QtCore.Qt.AlignCenter)

        save_progress_label = QtWidgets.QLabel("保存进度信息")
        save_progress_label.setAlignment(QtCore.Qt.AlignCenter)

        save_progress_bar = QtWidgets.QProgressBar()
        save_progress_bar.setAlignment(QtCore.Qt.AlignCenter)
        self.progress_bar_dict['save_progress_bar'] = save_progress_bar

        form = QtWidgets.QFormLayout()
        form.addRow(file_button, self.file_edit)
        form.addRow(file_dir_button, self.file_edit)
        form.addRow(QtWidgets.QLabel())
        form.addRow(info_label)
        form.addRow("代码", self.symbol_edit)
        form.addRow("交易所", self.exchange_combo)
        form.addRow("周期", self.interval_combo)
        form.addRow(QtWidgets.QLabel())
        form.addRow(head_label)
        form.addRow("时间戳", self.datetime_edit)
        form.addRow("开盘价", self.open_edit)
        form.addRow("最高价", self.high_edit)
        form.addRow("最低价", self.low_edit)
        form.addRow("收盘价", self.close_edit)
        form.addRow("成交量", self.volume_edit)
        form.addRow("持仓量", self.open_interest_edit)
        form.addRow(QtWidgets.QLabel())
        form.addRow(format_label)
        form.addRow("时间格式", self.format_edit)
        form.addRow(QtWidgets.QLabel())
        form.addRow(save_progress_label)
        form.addRow(save_progress_bar)
        form.addRow(load_button)

        self.setLayout(form)
예제 #10
0
    def initUI(self):
        '''
        |--------------|------------|
        |              |            |
        |              |            |
        |task list1    | log display|
        |task list1    |            |
        |task list1    |            |
        |task list1    |            |
        |------------- |------------|
        |          button           |
        |---------------------------|
        :return:
        '''

        self.setWindowIconText("获取数据任务列表")
        self.setObjectName("data_maintenance")
        QtCore.QMetaObject.connectSlotsByName(self)

        # 下面将输出重定向到textEdit中
        sys.stdout = EmittingStream(textWritten=self.outputWritten)
        sys.stderr = EmittingStream(textWritten=self.outputWritten)

        # 🛠todo 日志显示,用table view list 加入搜索的功能, 行号等, 彩色显示,
        self.logDisplay = QtWidgets.QTableWidget(self)

        self.logDisplay.setObjectName("tableForLog")
        self.logDisplay.setColumnCount(2)
        self.logDisplay.setHorizontalHeaderLabels(['日志内容', '来源'])
        self.logDisplay.setColumnWidth(0, 700)
        self.logDisplay.setColumnWidth(1, 100)
        self.gridLayut = QtWidgets.QGridLayout()
        self.taskListLayout = QtWidgets.QVBoxLayout()
        self.logListLayout = QtWidgets.QVBoxLayout()
        self.buttonListLayout = QtWidgets.QHBoxLayout()

        self.gridLayut.addLayout(self.taskListLayout, 0, 0, 1, 1)
        self.gridLayut.addLayout(self.logListLayout, 0, 1, 1, 1)

        self.gridLayut.setColumnMinimumWidth(1, 1400)
        '''
        void QGridLayout::addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
        This is an overloaded function.
        This version adds the layout layout to the cell grid, spanning multiple rows/columns. 
        The cell will start at row, column spanning rowSpan rows and columnSpan columns.
        If rowSpan and/or columnSpan is -1, then the layout will extend to the bottom and/or right edge, respectively.
        '''
        self.gridLayut.addLayout(self.buttonListLayout, 1, 0, 1, 3)

        #🛠todo QT 报错 QWidget::setLayout: Attempting to set QLayout "" on QWidget "", which already has a layout
        self.setLayout(self.gridLayut)

        self.qCheckboxWidgetList = []
        self.qProgressWidgetList = []
        self.allSubJobList = []

        # 🛠todo this is really stupid 01 02 03 04,... should use template ? does python have some template feature like c++
        #######################################################################
        self.create_job_08_save_stock_list()
        #######################################################################
        self.create_job_09_save_stock_block()
        #######################################################################
        self.create_job_10_save_stock_info()
        #######################################################################
        self.create_job_01_save_stock_day()
        #######################################################################
        self.create_job_02_save_stock_xdxr()
        #######################################################################
        self.create_job_03_save_stock_min()
        #######################################################################
        self.create_job_04_save_index_day()
        #######################################################################
        self.create_job_05_save_index_min()
        #######################################################################
        self.create_job_06_save_etf_day()
        #######################################################################
        self.create_job_07_save_etf_min()
        #######################################################################
        self.create_job_11_save_stock_transaction()
        #######################################################################
        self.selectedSubTask = QA_GUI_Selected_TaskQueue(self.logDisplay)
        self.selectedSubTask.trigger_all_task_start.connect(
            self.uiAllTaskStart)
        self.selectedSubTask.trigger_all_task_done.connect(self.uiAllTaskDone)

        #######################################################################

        self.logListLayout.addWidget(self.logDisplay)

        self.bntExecute = QtWidgets.QPushButton(self)
        self.bntExecute.setText("执行选中的任务 🐌")
        self.buttonListLayout.addWidget(self.bntExecute)

        # 🛠todo 没有实现!
        self.bntStopTack = QtWidgets.QPushButton(self)
        self.bntStopTack.setText("停止执行任务 🚫")
        self.buttonListLayout.addWidget(self.bntStopTack)

        self.bntClearLog = QtWidgets.QPushButton(self)
        self.bntClearLog.setText("清除日志 🗑")
        self.buttonListLayout.addWidget(self.bntClearLog)

        self.bntExecute.clicked.connect(self.doSelectedTask)
        self.bntStopTack.clicked.connect(self.doStopTask)

        layout = QtWidgets.QFormLayout()
        layout.setLabelAlignment(QtCore.Qt.AlignLeft)
        layout.addRow("保存日线数据 ", QtWidgets.QProgressBar(self))
        layout.addRow("保存日除权出息数据 ", QtWidgets.QProgressBar(self))
        layout.addRow("保存分钟线数据", QtWidgets.QProgressBar(self))
        layout.addRow("保存指数数据", QtWidgets.QProgressBar(self))

        layout.addRow("保存指数线数据 ", QtWidgets.QProgressBar(self))
        layout.addRow("保存ETF日线数据 ", QtWidgets.QProgressBar(self))
        layout.addRow("保存ET分钟数据", QtWidgets.QProgressBar(self))
        layout.addRow("保存股票列表", QtWidgets.QProgressBar(self))
        layout.addRow("保存板块", QtWidgets.QProgressBar(self))
        layout.addRow("保存tushare数据接口获取的股票列表", QtWidgets.QProgressBar(self))
        layout.addRow("保存高级财务数据(自1996年开始)", QtWidgets.QProgressBar(self))
        layout.addRow("保存50ETF期权日线数据(不包括已经摘牌的数据)",
                      QtWidgets.QProgressBar(self))

        qPushBnt = QtWidgets.QPushButton(self)
        qPushBnt.setText("开始执行")
        layout.addRow("选中需要执行的任务", qPushBnt)