期货日数据维护与使用_日数据维护_界面代码

news2024/11/22 20:17:25

目录

写在前面

界面图示

​编辑 代码

执行代码


写在前面

本文默认已经创建了项目,如果不知道如何创建一个空项目的,请参看以下两篇博文

PyQt5将项目搬到一个新的虚拟环境中
https://blog.csdn.net/m0_37967652/article/details/122625280
python_PyQt5开发工具结构基础
https://blog.csdn.net/m0_37967652/article/details/131969032

界面图示

 代码

class DailyUpdateWidget(QtWidgets.QWidget):
    signal_excute = QtCore.pyqtSignal(object)
    def __init__(self):
        super().__init__()
        self.thread: Thread = None
        self.init_data()
        self.init_ui()
        self.register_event()
        self.init_start()
        pass
    def init_data(self):
        self.left_table_headers = ['品种代码', '合约', '交割年', '最新日期']
        pass
    def init_ui(self):
        self.setWindowTitle('日数据更新(优矿)')
        self.setMinimumHeight(600)
        self.setMinimumWidth(800)

        self.caculate_progress = QtWidgets.QProgressBar()
        self.caculate_status_label = QtWidgets.QLabel()

        layout_progress = QtWidgets.QHBoxLayout()
        layout_progress.addWidget(self.caculate_progress)
        layout_progress.addWidget(self.caculate_status_label)

        deliYear_tip = QtWidgets.QLabel('设置计算要使用的交割年份:')
        self.deliYear_spinbox = QtWidgets.QSpinBox()
        self.deliYear_spinbox.setMinimum(1900)
        self.deliYear_spinbox.setMaximum(9999)
        self.deliYear_spinbox.setValue(datetime.datetime.now().year)
        layout_one = QtWidgets.QHBoxLayout()
        layout_one.addWidget(deliYear_tip)
        layout_one.addWidget(self.deliYear_spinbox)
        layout_one.addStretch(1)

        choice_symbol_dir_btn = QtWidgets.QPushButton('选择合约所在目录')
        choice_symbol_dir_btn.clicked.connect(self.choice_symbol_dir_btn_clicked)
        self.choice_symbol_dir_lineedit = QtWidgets.QLineEdit()
        self.choice_symbol_dir_lineedit.setReadOnly(True)
        excute_step_one_btn = QtWidgets.QPushButton('执行')
        excute_step_one_btn.clicked.connect(self.excute_step_one_btn_clicked)

        layout_two = QtWidgets.QHBoxLayout()
        layout_two.addWidget(choice_symbol_dir_btn)
        layout_two.addWidget(self.choice_symbol_dir_lineedit)
        layout_two.addWidget(excute_step_one_btn)

        self.new_symbol_json_down_btn = QtWidgets.QPushButton('新增合约json下载')
        self.new_symbol_json_down_btn.clicked.connect(self.new_symbol_json_down_btn_clicked)
        self.append_symbol_json_down_btn = QtWidgets.QPushButton('追加合约json下载')
        self.append_symbol_json_down_btn.clicked.connect(self.append_symbol_json_down_btn_clicked)
        self.new_symbol_json_down_btn.setDisabled(True)
        self.append_symbol_json_down_btn.setDisabled(True)
        layout_three = QtWidgets.QHBoxLayout()
        layout_three.addWidget(self.new_symbol_json_down_btn)
        layout_three.addWidget(self.append_symbol_json_down_btn)

        choice_symbol_dir_label = QtWidgets.QLabel('提示:从优矿中下载最新的合约列表,放在一个目录中,选择该目录。执行完后,下载要更新的合约json文件')

        # 分界线 s
        h_line_one = QtWidgets.QFrame()
        h_line_one.setFrameShape(QtWidgets.QFrame.HLine)
        h_line_one.setFrameShadow(QtWidgets.QFrame.Sunken)
        # 分界线 e

        self.choice_daily_dir_btn = QtWidgets.QPushButton('选择日数据所在目录')
        self.choice_daily_dir_btn.clicked.connect(self.choice_daily_dir_btn_clicked)
        self.choice_daily_dir_btn.setDisabled(True)
        self.choice_daily_dir_lineedit = QtWidgets.QLineEdit()
        self.choice_daily_dir_lineedit.setReadOnly(True)
        excute_step_two_btn = QtWidgets.QPushButton('执行')
        excute_step_two_btn.clicked.connect(self.excute_step_two_btn_clicked)
        layout_four = QtWidgets.QHBoxLayout()
        layout_four.addWidget(self.choice_daily_dir_btn)
        layout_four.addWidget(self.choice_daily_dir_lineedit)
        layout_four.addWidget(excute_step_two_btn)

        choice_daily_dir_label = QtWidgets.QLabel('提示:从优矿在下载待更新的日数据,放在一个目录中,选择该目录')

        # 分界线 s
        h_line_two = QtWidgets.QFrame()
        h_line_two.setFrameShape(QtWidgets.QFrame.HLine)
        h_line_two.setFrameShadow(QtWidgets.QFrame.Sunken)
        # 分界线 e

        tip_label = QtWidgets.QLabel('当前在线合约:')
        refresh_btn = QtWidgets.QPushButton('刷新')
        refresh_btn.clicked.connect(self.refresh_btn_clicked)
        download_btn = QtWidgets.QPushButton('下载')
        download_btn.clicked.connect(self.download_btn_clicked)

        layout_five = QtWidgets.QHBoxLayout()
        layout_five.addWidget(tip_label)
        layout_five.addStretch(1)
        layout_five.addWidget(refresh_btn)
        layout_five.addWidget(download_btn)

        self.left_table = QtWidgets.QTableWidget()
        self.left_table.setColumnCount(len(self.left_table_headers))
        self.left_table.setHorizontalHeaderLabels(self.left_table_headers)

        layout_six = QtWidgets.QVBoxLayout()
        layout_six.addLayout(layout_five)
        layout_six.addWidget(self.left_table)

        log_label = QtWidgets.QLabel('日志:')
        self.log_textedit = QtWidgets.QTextEdit()
        self.log_textedit.setReadOnly(True)
        layout_seven = QtWidgets.QVBoxLayout()
        layout_seven.addWidget(log_label)
        layout_seven.addWidget(self.log_textedit)

        layout_eight = QtWidgets.QHBoxLayout()
        layout_eight.addLayout(layout_six)
        layout_eight.addLayout(layout_seven)

        layout = QtWidgets.QVBoxLayout()
        layout.addLayout(layout_progress)
        layout.addLayout(layout_one)
        layout.addLayout(layout_two)
        layout.addLayout(layout_three)
        layout.addWidget(choice_symbol_dir_label)
        layout.addWidget(h_line_one)
        layout.addLayout(layout_four)
        layout.addWidget(choice_daily_dir_label)
        layout.addWidget(h_line_two)
        layout.addLayout(layout_eight)
        self.setLayout(layout)
        pass
    def register_event(self):
        self.signal_excute.connect(self.process_excute_event)
        pass
    def process_excute_event(self,data:Dict):
        mark_str = data['mark_str']
        pass
    def init_start(self):
        self.progress_init()
        pass
    def choice_symbol_dir_btn_clicked(self):
        pass
    def excute_step_one_btn_clicked(self):
        pass
    def new_symbol_json_down_btn_clicked(self):
        pass
    def append_symbol_json_down_btn_clicked(self):
        pass
    def choice_daily_dir_btn_clicked(self):
        pass
    def excute_step_two_btn_clicked(self):
        pass
    def refresh_btn_clicked(self):
        pass
    def download_btn_clicked(self):
        pass
    def start_caculate_thread(self,mark_str:str,data:Dict[str,Any]=None):
        if self.thread:
            QtWidgets.QMessageBox.information(
                self,
                '提示',
                '线程正在执行任务,请稍后...',
                QtWidgets.QMessageBox.Yes
            )
            return
        self.thread = Thread(
            target=self.running_caculate_thread,
            args=(
                mark_str,data,
            )
        )
        self.thread.start()
        self.progress_busy()
        pass
    def running_caculate_thread(self,mark_str:str,data:Dict[str,Any]):
        pass
    def progress_init(self) -> None:
        self.caculate_progress.setValue(0)
        self.caculate_status_label.setText('无任务')
    def progress_busy(self) -> None:
        self.caculate_progress.setRange(0, 0)
        self.caculate_status_label.setText('正在执行')
    def progress_finished(self) -> None:
        self.caculate_progress.setRange(0, 100)
        self.caculate_progress.setValue(100)
        self.caculate_status_label.setText('执行完毕')
        pass
    def closeEvent(self, a0: typing.Optional[QtGui.QCloseEvent]) -> None:
        self.close()
    pass

执行代码

if __name__ == '__main__':
    QtCore.QCoreApplication.setAttribute(QtCore.Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
    app = QtWidgets.QApplication(sys.argv)

    main_window = DailyUpdateWidget()
    main_window.show()
    app.exec()
    pass

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1361463.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试面试总结分享

第一轮 自我介绍。根据自己的情况扩展。你是怎么理解软件测试的?我觉得软件测试是很重要的岗位,如果一个系统开发完后不通过测试去产品质量把关,产品不能正常运行可能造成的后果,损失钱财、损失时间、损失客户等等,所…

2024苹果Mac电脑免费文件数据恢复软件EasyRecovery

EasyRecovery是一个操作安全、价格便宜、用户自主操作的非破坏性的只读应用程序,它不会往源驱上写任何东西,也不会对源驱做任何改变!EasyRecovery是一个操作安全、价格便宜、用户自主操作的非破坏性的只读应用程序,它不会往源驱上…

【SpringBoot实战专题】「开发实战系列」全方位攻克你的技术盲区之Spring定义Jackson转换Null的方法和实现案例

Spring自动定义Jackson转换Null得方法 背景MessageConverter 使用Jackson原生方式处理空字段(次重点方案)ObjectMapper的配置选项通过使用注解的方式 MappingJackson2HttpMessageConverter(重点方案)创建MappingJackson2HttpMessa…

深度学习在工地安全帽识别技术的应用与展望

当我们谈论“工地安全帽识别”时,实际上我们在探讨的是如何利用深度学习图像识别技术来提高建筑工地的安全性。这一技术的应用可以显著提高工地安全管理的效率和有效性,是现代建筑工程管理中不可或缺的一部分。以测评的北京富维图像的工地安全帽识别为例…

【管理篇 / 登录】❀ 06. macOS下使用USB配置线登录 ❀ FortiGate 防火墙

【简介】飞塔防火墙上都会配有CONSOLE接口,包装里都会配置一根USB配置线,通过这个接口和这根线,我们可以用命令的方式登录飞塔防火墙。随着苹果电脑的普及,我们来学习如何在macOS中使用USB配置线登录飞塔防火墙。 早期飞塔防火墙包…

【数据分享】2023年我国省市县三级的商务住宅数量(4类设施/Excel/Shp格式)

产业园区、住宅区、楼宇等商务住宅的数量是一个城市基础设施完善程度的重要体现,一个城市商务住宅的种类越丰富,数量越多,通常能表示这个城市的城市化水平越高! 本次我们为大家带来的是我国各省份、各地级市、各区县三个层级的商…

静态网页设计——网上书店(HTML+CSS+JavaScript)

前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 使用技术:HTMLCSSJS 主要内容:网上式的书店。是一种高质量,更快捷,更方便的购书方式。网上书店不仅可用于图书的在线销售…

使用 Maven 的 dependencyManagement 管理项目依赖项

使用 Maven 的 dependencyManagement 管理项目依赖项 介绍 在开发 Java 项目时&#xff0c;管理和协调依赖项的版本号是一项重要而繁琐的任务。 而 Maven 提供了 <dependencyManagement> 元素&#xff0c;用于定义项目中所有依赖项的版本。它允许您指定项目中每个依赖…

thinkadmin列表根据值判断男女显示和form选择select

{field: gs, title: 公司, align: left, minWidth: 140,templet

安全加固之weblogic屏蔽T3协议

一、前言 开放weblogic控制台的7001端口&#xff0c;默认会开启T3协议服务&#xff0c;T3协议则会触发的Weblogic Server WLS Core Components中存在反序列化漏洞&#xff0c;攻击者可以发送构造的恶意T3协议数据&#xff0c;获取目标服务器权限。 本文介绍通过控制T3协议的访问…

淘宝京东1688商品详情API接口,搜索商品列表接口

前言 在实际工作中&#xff0c;我们需要经常跟第三方平台打交道&#xff0c;可能会对接第三方平台API接口&#xff0c;或者提供API接口给第三方平台调用。 那么问题来了&#xff0c;如果设计一个优雅的API接口&#xff0c;能够满足&#xff1a;安全性、可重复调用、稳定性、好…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机掉线自动重连(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机掉线自动重连&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的掉线自动重连的技术背景通过PnP事件函数检查Baumer工业相机是否掉线在NEOAPI SDK里实现相机掉线重连方法&#xff1a;工业相机掉线重连测试演示图…

x-cmd-mod | zuz - 压缩或解压文件

目录 简介首次用户子命令x zuz zx zuz uzx zuz uzrx zuz ls 相关链接 简介 zuz 为 x-cmd 中的必用模块之一&#xff0c;提供压缩与解压文件的功能。 x z 就是调用 x zuz z&#xff0c;可将目标文件压缩根据后缀名成指定格式&#xff0c;x uz 则可以解压任何格式的压缩包 首次…

音乐制作软件Studio One mac有哪些特点

Studio One mac是一款专业的音乐制作软件&#xff0c;该软件提供了全面的音频编辑和混音功能&#xff0c;包括录制、编曲、合成、采样等多种工具&#xff0c;可用于制作各种类型的音乐&#xff0c;如流行音乐、电子音乐、摇滚乐等。 Studio One mac软件特点 1. 直观易用的界面&…

将DOM结构转换成图片保存至本地或保存至剪切板

在新业务需求中&#xff0c;碰到这样一个场景&#xff0c;需要将后端返回的表格数据&#xff0c;保存至本地或者保存至剪切板&#xff0c;直接发送给用户使用。 1. 将内容转换成图片并保存至本地 1.1 交互效果 如图所示&#xff0c;想要点击复制按钮后&#xff0c;将下面这个…

simulink代码生成(六)——中断向量模块的配置

假如系统中存在多个中断&#xff0c;需要合理的配置中断的优先级与中断向量表&#xff1b;在代码生成中&#xff0c;要与中断向量表对应&#xff1b;中断相关的知识参照博客&#xff1a; DSP28335学习——中断向量表的初始化_中断向量表什么时候初始化-CSDN博客 F28335中断系…

x-cmd pkg | thefuck - 终端命令纠错工具

目录 简介首次用户功能特点规则和即时模式竞品和相关作品进一步阅读 简介 thefuck 是一个终端命令纠错工具&#xff0c;可以帮助您更正先前键入的错误命令。它能纠正绝大部分常见的命令错误&#xff0c;如命令拼写不对、输错命令等。 基本原理&#xff1a;获取您最近执行的一…

机器学习(三) -- 特征工程(2)

系列文章目录 机器学习&#xff08;一&#xff09; -- 概述 机器学习&#xff08;二&#xff09; -- 数据预处理&#xff08;1-3&#xff09; 机器学习&#xff08;三&#xff09; -- 特征工程&#xff08;1-2&#xff09; 未完待续…… 目录 系列文章目录 前言 三、特征…

基于PCA-WA(Principal Component Analysis-weight average)的图像融合方法 Matlab代码及示例

摘要&#xff1a; 高效地将多通道的图像数据压缩&#xff08;如高光谱、多光谱成像数据&#xff09;至较低的通道数&#xff0c;对提高深度学习&#xff08;DL&#xff09;模型的训练速度和预测至关重要。本文主要展示利用PCA降维结合weight-average的图像融合方法。文章主要参…

Vagrant安装虚拟机

Vagrant安装虚拟机 优点&#xff1a;操作简单方便 vagrant仓库提供已配置完成镜像系统&#xff0c;只需简单命令可迅速初始化运行虚拟机 一、安装virtualBox 官方网站&#xff1a;Oracle VM VirtualBox 如果虚拟机安装失败&#xff0c;可能计算机未开启CPU虚拟化 二、安装V…