趣玩双色球APP-PyQt5实现

news2024/11/28 6:50:21

开发环境及软件主要功能说明

开发环境
win10 + Vscode + Python10.5-64_bit

使用的python库
requests,bs4,pandas,PyQt5

主要功能说明:

  1. 数据库更新,保存,另存为功能
  2. 过滤显示,根据期数,开奖日期,开间期号过滤
  3. 数据预测,随机预测,统计预测等
  4. 界面UI纯代码实现
  5. nuitka, pyinstaller 打包python 文件为exe方法

软件框架图

软件主要功能界面

APP使用视频演示

趣玩双色球app使用


 

语言大模型在这个APP干嘛了

        我一直在疑惑一个问题,现在大模型在软件实现上能够给我们什么帮助。为了得到一个答案我写了这个软件。有不懂或者不想写的代码我直接问百度文心一言,不懂就问。下面是我问的几个问题给出的答案。

PyQt 实现多线程

from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget  
from PyQt5.QtCore import QThread, pyqtSignal  
import time  
  
class Worker(QThread):  
    # 定义一个信号,当任务完成时发出  
    finished = pyqtSignal()  
  
    def run(self):  
        # 在这里执行你的长时间运行的任务  
        time.sleep(5)  # 模拟长时间运行的任务  
        self.finished.emit()  # 任务完成时发出信号  
  
class MainWindow(QMainWindow):  
    def __init__(self):  
        super().__init__()  
  
        self.initUI()  
  
        # 创建工作线程实例  
        self.worker = Worker()  
        # 连接工作线程的 finished 信号到一个槽函数  
        self.worker.finished.connect(self.on_finished)  
  
        # 启动工作线程  
        self.worker.start()  
  
    def initUI(self):  
        layout = QVBoxLayout()  
        btn = QPushButton('Start Thread', self)  
        btn.clicked.connect(self.start_thread)  # 注意:这里只是为了演示,实际上我们已经在 __init__ 中启动了线程  
        layout.addWidget(btn)  
  
        central_widget = QWidget()  
        central_widget.setLayout(layout)  
        self.setCentralWidget(central_widget)  
  
    def start_thread(self):  
        # 注意:通常不需要在这里启动线程,除非你想在按钮点击时启动新线程  
        # 但在这个例子中,我们已经在 __init__ 中启动了线程  
        pass  
  
    def on_finished(self):  
        # 当工作线程的任务完成时,这个槽函数会被调用  
        print("Worker thread finished!")  
  
if __name__ == '__main__':  
    app = QApplication([])  
    ex = MainWindow()  
    ex.show()  
    app.exec_()

pands 处理json数据

from pandas.io.json import json_normalize  
  
# 假设您有一个包含嵌套 JSON 对象的列表  
data = [  
    {'name': 'John', 'info': {'age': 30, 'city': 'New York'}},  
    {'name': 'Jane', 'info': {'age': 25, 'city': 'Los Angeles'}}  
]  
  
# 使用 json_normalize 来展开嵌套的数据  
df = json_normalize(data, 'info', ['name'])

pyqt中viem item的自定义显示

from PyQt5.QtWidgets import QApplication, QTreeView, QStyledItemDelegate  
from PyQt5.QtGui import QPainter, QBrush, QColor  
from PyQt5.QtCore import Qt, QStandardItemModel, QStandardItem  
  
class CustomDelegate(QStyledItemDelegate):  
    def paint(self, painter: QPainter, option: QStyleOptionViewItem, index: QModelIndex):  
        # 在这里,你可以根据 index.data() 或其他条件来更改渲染逻辑  
        # 例如,我们简单地改变背景色  
        if index.data(Qt.DisplayRole) == "Special Item":  
            painter.save()  
            painter.setBackground(QBrush(QColor("lightblue")))  
            painter.drawRect(option.rect)  
            painter.drawText(option.rect, Qt.AlignCenter, index.data(Qt.DisplayRole))  
            painter.restore()  
        else:  
            super().paint(painter, option, index)  
  
app = QApplication([])  
model = QStandardItemModel()  
model.appendRow([QStandardItem("Regular Item")])  
model.appendRow([QStandardItem("Special Item")])  
  
view = QTreeView()  
view.setModel(model)  
  
delegate = CustomDelegate(view)  
view.setItemDelegate(delegate)  
view.show()  
  
app.exec_()

PyQt 如何实现自定义toolbar

import sys  
from PyQt5.QtWidgets import QApplication, QMainWindow, QToolBar, QAction, QToolButton  
  
class CustomMainWindow(QMainWindow):  
    def __init__(self):  
        super().__init__()  
  
        # 创建一个工具栏  
        self.toolbar = QToolBar("Custom Toolbar")  
        self.addToolBar(self.toolbar)  
  
        # 添加一个自定义的QAction  
        self.action_open = QAction("Open", self)  
        self.action_open.triggered.connect(self.on_open)  
        self.toolbar.addAction(self.action_open)  
  
        # 添加一个自定义的QToolButton  
        self.button_save = QToolButton(self)  
        self.button_save.setText("Save")  
        self.button_save.clicked.connect(self.on_save)  
        self.toolbar.addWidget(self.button_save)  
  
    def on_open(self):  
        print("Open action triggered")  
  
    def on_save(self):  
        print("Save button clicked")  
  
if __name__ == "__main__":  
    app = QApplication(sys.argv)  
    window = CustomMainWindow()  
    window.show()  
    sys.exit(app.exec_())

文心一言实现自定义控件 

'''PyQt 实现一个控件,控件有2行,第1行包含2个label和一个文本框,文本框在2个标签之间。第2行有2个按钮,按钮四角有点弧度,第2行第1个按钮背景为红色
'''
import sys  
from PyQt5.QtWidgets import QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout  
from PyQt5.QtCore import Qt  
  
class CustomWidget(QWidget):  
    def __init__(self):  
        super().__init__()  
  
        # 初始化布局  
        self.initUI()  
  
    def initUI(self):  
        # 第一行布局  
        hline_layout = QHBoxLayout()  
  
        # 创建两个标签  
        label1 = QLabel('Label 1')  
        label2 = QLabel('Label 2')  
  
        # 添加到水平布局  
        hline_layout.addWidget(label1)  
  
        # 创建文本框  
        line_edit = QLineEdit()  
  
        # 添加文本框到水平布局  
        hline_layout.addWidget(line_edit)  
  
        # 继续添加第二个标签(尽管它可能不在文本框和第一个标签之间,但在这个例子中它后面)  
        hline_layout.addWidget(label2)  
  
        # 第二行布局  
        vline_layout = QVBoxLayout()  
  
        # 创建两个按钮,并设置样式表以添加圆角  
        button1 = QPushButton('Red Button')  
        button1.setStyleSheet('QPushButton { background-color: red; border-radius: 10px; }')  
        button2 = QPushButton('Another Button')  
        button2.setStyleSheet('QPushButton { border-radius: 10px; }')  
  
        # 添加到垂直布局  
        vline_layout.addWidget(button1)  
        vline_layout.addWidget(button2)  
  
        # 主布局  
        main_layout = QVBoxLayout()  
  
        # 将两个布局添加到主布局中  
        main_layout.addLayout(hline_layout)  
        main_layout.addLayout(vline_layout)  
  
        # 设置主窗口的布局  
        self.setLayout(main_layout)  
  
        # 设置窗口标题和大小  
        self.setWindowTitle('Custom Widget')  
        self.setGeometry(300, 300, 300, 200)  
  
if __name__ == '__main__':  
    app = QApplication(sys.argv)  
    ex = CustomWidget()  
    ex.show()  
    sys.exit(app.exec_())

           从体验结果来看,文心一言基本能够给出个可以跑的基本功能代码,代码注释也比较详细。借助大模型工具在我的这个软件中可以减少30%左右的工作量。 

        大模型能够提供基本的轮子,但是想要做到产品化的程度,大模型还有一段路要走。当前环境下,软件开发还是要对基本的框架,理论熟悉,基本功扎实,才能游刃有余的使用大模型来提高我们的工作效率。

将python 打包为exe文件

#  nuitka
```
将python代码先转成c代码,然后调用本地编译器编译成本地机器码

1. 安装nuitka 
pip install nuitka

2.配置本地c编译器,默认使用的mingw编译器路径如下:

编译器csdn下载地址: https://download.csdn.net/download/wllw7176/89374134

将winlibs-x86_64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64msvcrt-11.0.1-r1.zip 解压的mingw64文件夹放到上面路径

c:\Users\lwua\AppData\Local\Nuitka\Nuitka\Cache\downloads\gcc\x86_64\13.2.0-16.0.6-11.0.1-msvcrt-r1\

3.执行如下打包程序,编译时间较长
nuitka.bat --standalone  --onefile  --disable-console --enable-plugin=pyqt5 app_main_window.py
```

# pyinstaller
```
 将pthon代码转为字节码,python解释器及依赖库,都会打包到最终的exe文件中,这种方式的exe 本质还是python解释器将字节码翻译成机器码,执行效率较低
1. pyinstaller 
pip install pyinstaller

2.打包程序
pyinstaller.exe --onefile  -i pics/logo_xn.ico  app_main_window.py

```

代码共享

        在开源软件开发的江湖中,只给人看Demo,不给源码是不道德的。我这个人呢,做不到大爱无疆,但是小爱奉献还是有的。要源码的直接去这里下载趣玩双色球app源码。

趣玩APP的口号

       玩趣玩吗-必须的

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

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

相关文章

如何利用Kimi解读Kimi的KVCache技术细节

最近Kimi公布了一篇Mooncake: Kimis KVCache-centric Architecture for LLM Serving的文章,详细介绍了Kimi背后的推理架构,因此笔者想到用Kimi解读Kimi,梳理相关技术要点如下,供大家参考: 文章 "Mooncake: A KVCa…

深入讲解C++基础知识(二)

目录 一、复合类型1.引用1.1 引用的定义和使用1.2 引用的注意事项 2. 指针2.1 指针的定义和使用2.2 指针的四种状态2.3 指针的注意事项2.4 其他指针操作2.5 void* 指针 3. 理解复合类型变量的声明4. const 限定符4.1 const 对象的注意事项4.2 const 和引用4.2.1 术语&#xff1…

MAS马氏数控制榫机控制面板维修显示屏MDK3113B

马氏数控榫头机触摸屏/显示面板维修型号:MX3810A;MDK3113B;MXK2815B MAS马氏数控开榫机触摸屏/显示面板维修型号: MX2108B;MD2108A;MJ105А 数控面板维修包括:马氏数控榫头机、开榫机、制榫机…

STM32自己从零开始实操07:电机电路原理图

一、LC滤波电路 其实以下的滤波都可以叫低通滤波器。 1.1倒 “L” 型 LC 滤波电路 1.1.1定性分析 1.1.2仿真实验 电感:通低频阻高频的。仿真中高频信号通过电感,因为电感会阻止电流发生变化,故说阻止高频信号 电容:隔直通交。…

Prometheus + Grafana 监控系统搭建使用指南-mysqld_exporter 安装与配置

使用mysqld_exporter 实现Prometheus 监控Mysql 系列文章目录 Prometheus 的安装部署Grafana的安装部署Linux服务器接入Prometheus监控-Node Exporter 安装指南Prometheus 接入SpringBoot微服务监控Mysql 接入 Prometheus RocketMQ 接入Prometheus 监控ElasticSearch 接入 Pr…

Renderless 思想正在影响前端开发

本文由前端小伙伴方长_beezen 原创。欢迎大家踊跃投稿。 原文链接:https://juejin.cn/post/7385752495535472655 前言 截止到 2024 年,跨端应用开发所需要考虑的兼容性,已经涵盖了框架、平台和设备类型等多个方面,例如&#xff1…

AI学习与实践6_AI解场景Agent应用预研demo

前言 学习大模型Agent相关知识,使用llama_index实现python版的Agent demo,根据AI解题场景知识密集型任务特点,需要实现一个偏RAG的Agent WorkFlow,辅助AI解题。 使用Java结合Langchain4j支持的RAG流程一些优化点以及自定义图结构…

基于工业互联网的智能制造:未来制造业的新引擎

随着科技的飞速发展,工业互联网通过提供强大的数据支撑和通信基础,成为智能制造的重要基石。智能制造的引入,不仅显著提升了制造业的生产效率、降低了成本,而且提高了产品质量,满足了市场的多样化、个性化需求。 智能制…

创建react的脚手架

Create React App 中文文档 (bootcss.com) 网址:creat-react-app.bootcss.com 主流的脚手架:creat-react-app 创建脚手架的方法: 方法一(JS默认): 1. npx create-react-app my-app 2. cd my-app 3. …

(三十一)Flask之wtforms库【剖析源码下篇】

每篇前言: 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 🔥🔥本文已收录于Flask框架从入门到实战专栏:《Flask框架从入…

ESP32CAM物联网教学08

ESP32CAM物联网教学08 本地网页控制小车 小智制作的物联网小车,在与云台监控摄像头的PK中,一路攻城掠地、勇往直前。突然有一天,他觉得似乎忘了最开始时的初衷,忘了一路走来的首发站:这个不就是一辆遥控车吗?我能不能就做一辆快乐的、纯粹的遥控车。 CameraWebServer转换…

相关款式1111

一、花梨木迎客松 1. 风速打单 发现只有在兄弟店铺有售卖 六月份成交订单数有62笔 2. 生意参谋 兄弟店铺商品访客数:3548,支付件数:95件 二. 竹节茶刷(引流) 1. 风速打单 六月订单数有165笔 兄弟:…

【技术支持】console控制台输出美化(腾讯文档)

function style(color, size 12){return display:inline-block;background-color:${color};color:#fff;padding:2px 4px;font-size:${size}px; } const dataVersion 3.0.0 const codeVersion 3.0.28657969 const branchVersion release-20240617-f98487dc //注意此处%c后面…

CDC实时同步进行时遇到不可抗力中断了怎么办?

目录 一、CDC技术的概念 二、CDC技术的应用场景 1.数据复制和同步 2.实时数据仓库 3.业务过程监控和审计 4.ETL 进程优化 三、CDC与数据管道的关系 1.区别 CDC(Change Data Capture) 数据管道(Data Pipeline) 2.联系 CDC是数据管道…

【pycharm】 Virtualenv创建venv报错

一、背景 在启动django项目时,需要创建venv环境,有时候能顺利创建成功,当python版本换成3.8时,会报错 ImportError: DLL load failed while importing _ssl: 找不到指定的模块。 二、原因和解决措施 之所以执行这个报错&#…

六西格玛绿带培训如何告别“走过场”?落地生根

近年来,六西格玛绿带培训已经成为了众多企业提升管理水平和员工技能的重要途径。然而,不少企业在实施六西格玛绿带培训时,往往陷入形式主义的泥潭,导致培训效果大打折扣。那么,如何避免六西格玛绿带培训变成“走过场”…

前端面试项目细节重难点(十)(已工作|做分享)

面试官:现场出需求:我想让一个左侧盒子可以进行拉伸、缩小、展示或隐藏这些功能,你会如何实现? 答:(1)分析问题:其实,我听到这个问题后: 我的第一种想法&am…

化学合成水热釜 加热反应釜 实验室高温高压设备

水热釜,也称为高压消解罐或高压釜,是一种能够在高温高压条件下进行化学反应的实验室设备。它广泛应用于化学、地质、材料科学、环境科学等领域,特别是在需要在高压环境下加速化学反应或溶解难溶物质的实验中。以下是水热釜的一些关键特性和用…

Android14之获取包名/类名/服务名(二百二十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…