PyQt5系列

基本使用

        1、创建应用,初始化UI界面,创建布局盒子 

# -*- coding: utf-8 -*-
# Creator: zhu
# Time: 2023-12-13
import xlwt
import sys, base64, xlrd, re, datetime
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QFileDialog, QLabel, QMessageBox, QRadioButton, QComboBox
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
from PyQt5.QtCore import QUrl
import timeclass App(QWidget):def __init__(self):super().__init__()self.title = 'CFS文件处理'self.initUI()def initUI(self):self.setWindowTitle(self.title)# 创建布局盒子layout = QVBoxLayout()self.setLayout(layout)self.show()if __name__ == '__main__':app = QApplication(sys.argv)ex = App()sys.exit(app.exec_())

        2、初始化UI(背景图、布局、各种控件按钮、大小)

                点击QPushButton, 下滑菜单QComboBox, 单选按钮QRadioButton

     def initUI(self):self.setWindowTitle(self.title)# QBoxLayout  盒子布局 layout虚拟容器layout = QVBoxLayout()background_label = QLabel(self)background_label.setPixmap(QPixmap("C:\\Users\\VSPN\\Desktop\\xml\\cd.png"))layout.addWidget(background_label)self.resize(400, 300)  # Set the window size to 600x900# Create a button to open the file dialog# 自定义button 大小 调用绑定方法 openFileNameDialogself.button = QPushButton('上传文件', self)self.button.setFixedWidth(465)self.button.setFixedHeight(50)self.button.clicked.connect(self.openFileNameDialog)# 创建下拉菜单并添加选项self.combo_box = QComboBox()self.combo_box.addItem('txt')self.combo_box.addItem('excl')# ---------------self.download_btn = QPushButton('下载文件', self)self.download_btn .clicked.connect(self.downloadFile)self.download_btn.setFixedWidth(465)self.download_btn.setFixedHeight(50)# 创建两个单选按钮self.radio_button1 = QRadioButton("Option 1")self.radio_button2 = QRadioButton("Option 2")# 选中选项变化时触发的方法self.radio_button1.toggled.connect(self.onRadioButtonToggled)self.radio_button2.toggled.connect(self.onRadioButtonToggled)# Layout 虚拟容器 通过addWidget(QWidget) / RemoveWidget(QWidget) 往里面添加 / 移除组件并实现多组件自动布局# 横向布局的是QHboxLayout(), 纵向布局的就是QVboxLayout(),layout.addWidget(self.button)layout.addWidget(self.combo_box)layout.addWidget(self.download_btn)self.setLayout(layout)self.show()

          3、实例方法(上传文件处理)

    def openFileNameDialog(self):# Open file dialog and get the selected file path# 设置文件对话框的选项options = QFileDialog.Options()fileName, _ = QFileDialog.getOpenFileName(self, "QFileDialog.getOpenFileName()", "", "All Files (*);;Python Files (*.py)", options=options)if fileName:try:# 此处文件处理逻辑 入mysql或者其他操作# xls_to_sql(fileName)print(fileName)self.fileName = fileName# QMessageBox弹窗提示QMessageBox.information(self, 'success', "上传文件成功", QMessageBox.Ok)except Exception as e:QMessageBox.information(self, 'Error', "上传文件失败", QMessageBox.Ok)

           4、下载方法(远程下载连接)

                        此为远程连接下载,亦可改成sql查询写文件等

    def downloadFiles(self):# Handle download operation hereurl = 'http://cfsraffle.vspnit.com/raffle/download'  # 文件 URLfilename = 'raffle.xls'  # 保存的文件名url = QUrl(url)# 创建 QNetworkAccessManager 对象manager = QNetworkAccessManager(self)# 创建请求并发送到服务器获取文件内容try:# QUrl类型的url,不接受str类型的urlrequest = QNetworkRequest(url)reply = manager.get(request)except Exception as e:print(e)# 等待文件下载完成# while not reply.isFinished():# QMessageBox.information(self, 'success', "开始下载文件", QMessageBox.Ok)# pass# 检查是否下载成功QMessageBox.information(self, 'success', "CFS中奖名单下载中", QMessageBox.Ok)time.sleep(5)if reply.error() != QNetworkReply.NoError:print(f"Error: {reply.error()}")QMessageBox.information(self, 'errr', "CFS中奖名单下载文件失败", QMessageBox.Ok)else:print("File downloaded successfully!")QMessageBox.information(self, 'success', "CFS中奖名单下载文件成功", QMessageBox.Ok)# 将文件保存到本地with open(filename, 'wb') as f:while not reply.isReadable():passdevice = reply.readAll()f.write(device)print(f"File saved as {filename}")

             5、获取下拉菜单选择的选项

    def qComboBoxToggled(self):# 获取下拉菜单选择的选项selected_item = self.combo_box.currentText()if selected_item == 'txt':QMessageBox.information(self, 'success', "下载txt成功", QMessageBox.Ok)elif selected_item == 'excl':QMessageBox.information(self, 'success', "下载excl成功", QMessageBox.Ok)else:return  # 处理无效选项的情况

             6、 检查哪个单选按钮被选中,并保存其值

 def onRadioButtonToggled(self, checked):# 获取下拉菜单选择的选项if checked:if self.sender() == self.radio_button1:self.selected_value = "Option 1"print("Option 1")elif self.sender() == self.radio_button2:self.selected_value = "Option 2"print("Option 2")

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

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

相关文章

windows下类Unix模拟环境,msys2,mingw,gcc的安装与环境配置

windows下常用的类Unix模拟环境: git fow windows:git等mingw:打包了gcc等编译器cygwin:大而全的类Unix环境支持msys2:自带大量预编译的软件包,提供pacman软件管理工具,能安装Unix下大部分软件…

039:我自己的 ostream_iterator

描述 程序填空输出指定结果 #include <iostream> #include <list> #include <string> using namespace std;template <class T1,class T2> void Copy(T1 s,T1 e, T2 x) {for(; s ! e; s,x)*x *s; }template<class T> class myostream_iteraot…

【星环云课堂大数据实验】kafka消息发布与订阅

文章目录 一、Kafka概述二、实验环境三、实验准备四、实验目的五、实验步骤5.1、创建Kafka Topic5.2、Kafka消息发布5.3、Kafka消息订阅 六、实验感悟 一、Kafka概述 Kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;由Scala和Java编写。该项目的目标是为处理实…

内存的管理、扩充、存储保护、地址转换、分配和回收

一、 内存的存储保护 1.1 上、下限寄存器方式&#xff1a; 上、下限寄存器&#xff08;Limit Registers&#xff09;&#xff1a;这是一种硬件级别的内存保护机制。每个进程都有一对上、下限寄存器&#xff0c;用于定义该进程能够访问的内存范围。上限寄存器存储进程能够访问的…

【Android12】WindowManagerService架构分析

Android WindowManagerService架构分析 WindowManagerService(以下简称WMS) 是Android的核心服务。WMS管理所有应用程序窗口(Window)的Create、Display、Update、Destory。 因为Android系统中只有一个WMS&#xff08;运行在SystemServer进程&#xff09;&#xff0c;可以称其为…

快宝技术:连接无代码开发,API集成提升电商营销和用户运营效率

无代码开发&#xff1a;创新的启航 快宝技术自2012年成立至今&#xff0c;一直是无代码开发领域的佼佼者。通过无代码开发平台&#xff0c;快宝技术旨在降低技术门槛&#xff0c;并使非技术人员能够轻松创建和部署应用程序。这不仅使得快递末端软件开发变得高效和便捷&#xf…

vue3.0项目搭建

一、安装vue3脚手架 卸载vue2脚手架 npm uninstall -g vue-cli清除缓存 npm cache clen --force安装最新脚手架 npm install -g vue/cli查看脚手架版本 vue -V 二、构建项目 创建项目 vue create 项目名选择配置 自定义配置&#xff0c;回车 上下键选择Linter / Formatter&a…

深入探索:Python 中 Scipy 的信号处理技术

写在开头 信号处理作为数字信号处理领域的关键技术&#xff0c;涵盖了从信号获取、传输、存储到最终应用的一系列处理步骤。在这篇博客中&#xff0c;我们将深入探讨Python中Scipy库在信号处理领域的应用。首先&#xff0c;我们会简要概述信号处理的基本概念&#xff0c;随后引…

DC-2靶场

DC-2 下载地址&#xff1a;DC and Five86 Series Challenges - Downloads​编辑https://www.five86.com/downloads.html DC-2环境配置&#xff1a;解压后在vm虚拟机点击左上方文件-->打开-->选择解压后的DC-2。把kali和DC-2的网路适配器都改成NAT模式 flag1 首先进行主…

【教程】从零开始的ORB-SLAM3的安装与配置

引言 最近项目需求需要接触vslam&#xff0c;博主选择从ORB-SLAM3下手并且记录下安装的基本流程。不得不说&#xff0c;这安装流程就像二大娘的裹脚布。 大致环境前提&#xff1a;Ubuntu20.04 一、ORB-SLAM3的源码下载 1、首先&#xff0c;为了方便管理文件&#xff0c;我们…

GDB调试技巧实战--commands(断点回调)

commands的介绍 直接看gdb的help:commands会在关联的断点断住时被执行。 (gdb) help commands Set commands to be executed when a breakpoint is hit. Give breakpoint number as argument after "commands". With no argument, the targeted breakpoint is the …

面向对象三大特征之二:继承

继承的快速入门 什么是继承&#xff1f; Java中提供了一个关键字extends&#xff0c;用这个关键字&#xff0c;可以让一个类与另一个类建立起父子关系 继承的特点 子类能继承父类的非私有成员&#xff08;成员变量、成员方法&#xff09; 继承后对象的创建 子类的对象是由…

MyBatis Plus 大数据量查询优化

大数据量操作的场景大致如下&#xff1a; 数据迁移 数据导出 批量处理数据 在实际工作中当指定查询数据过大时&#xff0c;我们一般使用分页查询的方式一页一页的将数据放到内存处理。但有些情况不需要分页的方式查询数据或分很大一页查询数据时&#xff0c;如果一下子将数…

RTX 40 SUPER发布时间定了!价格也有了

快科技12月16日消息&#xff0c;NVIDIA RTX 40 SUPER系列显卡基本确定将在2024年1月8日正式发布&#xff0c;也就是CES 2024大展期间&#xff0c;随后在1月中下旬陆续解禁上市。 RTX 4070 SUPER 1月16日解禁公版/原价丐版&#xff0c;1月17日解禁高价高配版&#xff0c;上市开…

测试架构师必备技能-Nginx安装部署实战

Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的免费开源Web和 反向代理服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。在高并发访问的情况下&#xff0c;Nginx是Apache服务器不错的替代品。官网数据显示每秒TPS高达50W左右。本文为读者朋…

FPGA设计时序约束十二、Set_Clock_Sense

目录 一、序言 二、Set Clock Sense 2.1 基本概念 2.2 设置界面 2.3 命令语法 2.4 命令示例 三、工程示例 3.1 工程代码 3.2 无set_clock_sense 3.3 设置set_clock_sense 四、参考资料 一、序言 本章将介绍Set_Clock_Sense约束&#xff0c;在介绍约束之前&#xff0…

《Kotlin核心编程》笔记:反射、注解和加锁

Kotlin 和 Java 反射 1&#xff09;Kotlin 的 KClass 和 Java 的 Class 可以看作同一个含义的类型&#xff0c;并且可以通过.java和.kotlin方法在KClass和Class之间互相转化。2&#xff09;Kotlin 的 KCallable 和 Java 的 AccessiableObject 都可以理解为可调用元素。Java 中构…

Redis List类型

列表类型是用来存储多个有序的字符串&#xff0c;如图所示&#xff0c;a、b、c、d、e 五个元素从左到右组成了一个有序的列表&#xff0c;列表中的每个字符串称为元素 (element)&#xff0c;一个列表最多可以存储2的32次方 -1个元素。在 Redis 中&#xff0c;可以对列表两端插入…

Linux 基本语句_15_Tcp并发服务器

原理&#xff1a; 利用父子进程。父进程接收客户端的连接请求&#xff0c;子进程处理客户端的数据处理操作&#xff0c;两者各施其职。最终实现能够多个客户端连接一个服务端的操作。 代码&#xff1a; 服务端代码&#xff1a; #include <stdio.h> #include <sys/…