|从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面
🐑 |从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面🐑
文章目录
- 🐑 |从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面🐑
- ♈前言♈
- ♈Pyside2环境搭建♈
- ♈做个简单的UI界面♈
- ♒代码实现♒
- ♒QTdesigner设计UI界面♒
- ♒总结♒
♈前言♈
距离上一次写博客已经过去大半年了,突然一写感觉markdown都有点不太会用了(被去年一周一更的想法啪啪打脸😑)。主要也是去年最后一段时间有点小emo,导致生活和科研的疯狂摆烂(然后就一直摆烂一直爽了🤓)。
算了言归正传,生活还很长,学习也还要继续。最近由于要参加某某比赛的缘故,需要把自己的课题加点实用性,做到真正意义上的落地,于是就自己想着捣鼓点前段页面之类的,最后决定从零开始学习这系列编程,并记录一下学习的一些过程,踩过的弯路以及一点小的心得。本篇博客身为这个专栏的处女篇主要包含Pyside2环境搭建以及简单ui界面的制作,就算是一个简单的🌴Hello World🌴。
♈Pyside2环境搭建♈
这个专栏通篇都会使用pyside2
作为开发库。
PySide2 是 Qt 官方支持的 Python 绑定版本,全名为 Qt for Python,对应 Qt 的 5.x 系列。它提供了完整的 Qt 框架 API,包括窗口、布局、控件、信号槽机制、多媒体、动画等模块,允许开发者使用 Python 编写高质量的跨平台桌面应用。
除了pyside2
之外当前使用比较多的嗨哟pyqt
、pyside6
,但是pyside2
相比较于他俩而言,拥有更加宽松的授权以及兼容性更好,并且由于他的第三方库以及相关教程足够多导致pyside2
更容易上手一点,生态更加成熟。但是正因为这个特点导致他打包后生成的最后应用程序体积较大(几十MB起步)
⚖️PySide2 的优缺点对比分析
分类 | 项目 | 说明 |
---|---|---|
✅ 优点 | 官方支持 | 由 Qt 官方维护,稳定性与兼容性好 |
✅ 优点 | 免费开源授权宽松 | 使用 LGPL v3,可用于闭源商业项目,不受限制 |
✅ 优点 | API 风格统一 | 接口命名风格接近 Qt 原生 C++,方便查阅与迁移 |
✅ 优点 | 跨平台能力强 | 支持 Windows、Linux、macOS 等主流桌面系统 |
✅ 优点 | 教学与原型开发友好 | 使用 Python 编写 GUI,更简洁易懂,适合教学与快速开发 |
❗ 缺点 | 打包体积大 | 打包后的程序较大,动辄几十 MB,不利于轻量化部署 |
❗ 缺点 | Qt Designer 集成不够流畅 | .ui 文件转换步骤较繁琐,命令行工具不如 PyQt5 使用顺畅 |
❗ 缺点 | 缺少部分 PyQt 扩展功能 | 如 pyqtSignal 、pyqtProperty 等 PyQt 独有特性不可直接使用 |
🧠 总结建议
如果你的目标是 快速开发、开源授权友好、兼容性强 的 Python GUI 工具,PySide2 是非常值得选择的工具框架。
若追求更丰富的文档、更复杂的界面特效,也可考虑 PyQt5 或 PySide6,但需权衡授权和平台兼容性。
大致这就是选择他的一些想法,下面说一下如何去配置相关的库。还是和原来一样,为了便于管理还是建议配置在一个虚拟环境中,如果对于虚拟环境不太了解的朋友可以看一下我另一篇博客:|Anaconda安装| Anaconda、pycharm安装及配置虚拟镜像源和Python环境详细教程。
首先打开Anaconda Prompt
打开之后,配置相关虚拟环境并且激活,例如我这里就是激活了一个名为pingyeling
的虚拟环境
我这里安装的是3.8版本的python
下面是安装pyside2
的命令符
pip install pyside2
这里更推荐使用pip
安装,因为conda
仓库中的pyside2
版本可能会比较旧。
这里出现successful
就是安装成功。
♈做个简单的UI界面♈
安装成功之后就可以进行pyside2
的hello world了,这里简单介绍两种方法,一种是纯粹的使用代码实现,另一种就是用库里的QTdesigner
。
♒代码实现♒
这里先实现一个简单的ui界面,可以通过输入姓名和性别来分类出男性和女性的分类。下图就是简单的实现后的一个结果。
首先介绍一下实现性别统计那个UI界面的代码。
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEditapp = QApplication([])
首先是导入库里四个常用的ui界面控件类,从英文意思能猜到分别负责整个应用程序的管理类、主窗口类、按钮控件以及纯文本编辑。其次就是创建了一个QApplication
的实例,并命名为app
window = QMainWindow()
window.resize(500, 400)
window.move(300, 310)
window.setWindowTitle('性别统计')
这里就是实现一个主窗口,其中window.resize()
为设置主窗口的大小,window.move()
为设置的主窗口的位置,并且用window.setWindowTitle()
将主窗口命名为‘性别统计’
textEdit = QPlainTextEdit(window)
textEdit.setPlaceholderText("请输入姓名")
textEdit.move(10,25)
textEdit.resize(300,350)
然后就是上述代码做一个文本编辑框,同样也是实例化后定义其大小和位置,textEdit.setPlaceholderText("请输入姓名")
则是提示用户的输入
button = QPushButton('统计', window)
button.move(380,80)
最后就是将统计
按钮用上述代码定义,其中button = QPushButton('统计', window)
这里将其父控件定义为window
即主窗口。
window.show()app.exec_()
最后两行代码就是显示窗口以及设置程序为持续运行
完整ui界面代码:
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEditapp = QApplication([])window = QMainWindow()
window.resize(500, 400)
window.move(300, 310)
window.setWindowTitle('性别统计')textEdit = QPlainTextEdit(window)
textEdit.setPlaceholderText("请输入姓名")
textEdit.move(10,25)
textEdit.resize(300,350)button = QPushButton('统计', window)
button.move(380,80)window.show()app.exec_()
至此我们就完整定义了一个UI界面,如下图。
但是现在他只是一个含有主窗口、文本编辑框以及按钮的界面,还无法实现任何任务,后面我们将继续定义相关交互动作,在本UI界面中交互动作主要包括button
按钮点击后应处理的任务,以及输入文本后的处理。
既然我们需要实现把输入的姓名 0/1
进行性别分类,首先把性别分类的代码封装为函数完成。
def handle():info = textEdit.toPlainText()male = ''female = ''for line in info.splitlines():if not line.strip():continueparts = line.split(' ')# 去掉列表中的空字符串内容parts = [p for p in parts if p]name,sex = partsif int(sex) == 0:male += name + '\n'else:female += name + '\n'QMessageBox.about(window,'统计结果',f'''男性有:\n{male}\n女性有:\n{female}''')
其中info = textEdit.toPlainText()
可以将文本编辑框中输入的信息进行提取并赋值给info
QMessageBox.about(window, '统计结果', f'''男性有:\n{male} \n女性有:\n{female}''' )
创建了一个弹出窗口类的实例,并依附于父窗口window
,并且输出由上述函数处理的结果。
并且button
定义的地方加上button.clicked.connect(handleCalc)
,目的是检测到统计
按钮检测到被点击后执行handleCalc
函数。
完整代码(ui界面搭建和功能实现)如下:
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEdit,QMessageBoxdef handleCalc():info = textEdit.toPlainText()male = ''female = ''for line in info.splitlines():if not line.strip():continueparts = line.split(' ')# 去掉列表中的空字符串内容parts = [p for p in parts if p]name,sex = partsif int(sex) == 0:male += name + '\n'else:female += name + '\n'QMessageBox.about(window,'统计结果',f'''男性有:\n{male}\n女性有:\n{female}''')app = QApplication([])window = QMainWindow()
window.resize(500, 400)
window.move(300, 300)
window.setWindowTitle('性别统计')textEdit = QPlainTextEdit(window)
textEdit.setPlaceholderText("请输入姓名及性别(男性为0,女性为1)")
textEdit.move(10,25)
textEdit.resize(300,350)button = QPushButton('统计', window)
button.move(380,80)
button.clicked.connect(handleCalc)window.show()app.exec_()
后续为了更好地管理代码我们可以把以类
的形式进行封装,以类
进行封装后的完整代码:
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEdit, QMessageBoxclass GenderStatsApp(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("性别统计")self.resize(500, 400)self.move(300, 300)self.textEdit = QPlainTextEdit(self)self.textEdit.setPlaceholderText("请输入姓名及性别(男性为0,女性为1)")self.textEdit.move(10, 25)self.textEdit.resize(300, 350)self.button = QPushButton("统计", self)self.button.move(380, 80)self.button.clicked.connect(self.handleCalc)def handleCalc(self):info = self.textEdit.toPlainText()male = ''female = ''for line in info.splitlines():if not line.strip():continueparts = [p for p in line.split(' ') if p]if len(parts) != 2:continuename, sex = partsif sex == '0':male += name + '\n'elif sex == '1':female += name + '\n'QMessageBox.about(self,'统计结果',f'''男性有:\n{male}\n女性有:\n{female}''')if __name__ == "__main__":app = QApplication([])window = GenderStatsApp()window.show()app.exec_()
♒QTdesigner设计UI界面♒
首先我们要从安装的pyside2
包里面找到QTdesigner
如果不知道自己的虚拟环境位置可以从conda prompt
中使用conda env list
进行查找
打开QTdesigner
后就是如下页面。
我们可以通过这个页面直接像搭积木一样首先搭建好UI界面。首先我们可以默认创建一个Widget.
其中页面左侧Widget Box里面会包含我们搭建UI界面所需要的各种组件,例如按键表格等。首先从左侧找到一个文本编辑框,也就是Plain Text Edit
将其拖出来后调成合适的大小即可,并找到push botton
也将其拖出来调至合适大小和位置。
然后双击按钮的位置可以更改名称将其改为统计,然后选中文本编辑框在右侧属性的地方将placeholderText
改为请输入
即可
最后我们可以再上方菜单栏的窗体下面预览一下最后结果
最后记得保存一下,保存位置建议和自己Python
项目在同一个文件夹
相较于直接编写代码实现,在自己设计好UI界面后只需要将其加载出来就可以继续后续操作。
class Sex():def __init__(self):qfile_stats = QFile('tst.ui')qfile_stats.open(QFile.ReadOnly)self.ui = QUiLoader().load(qfile_stats)qfile_stats.close()self.ui.button.clicked.connect(self.handleCalc)self.textEdit = self.ui.findChild(QPlainTextEdit, 'textEdit')
上述为加载代码,其中需要注意自己控件的ObjectName
,可以再QTdesigner
中选中在右边属性栏中看到。
我这里两个编辑框为textEdit
,按钮为button
,如果不一样只需要把代码最后两行改成自己的名称即可。后面实现跟上个方法就打差不差了,直接上代码吧
from PySide2.QtWidgets import QApplication, QPlainTextEdit,QMessageBox
from PySide2.QtUiTools import QUiLoader
from PySide2.QtCore import QFileclass Sex():def __init__(self):qfile_stats = QFile('tst.ui')qfile_stats.open(QFile.ReadOnly)self.ui = QUiLoader().load(qfile_stats)qfile_stats.close()self.ui.button.clicked.connect(self.handleCalc)self.textEdit = self.ui.findChild(QPlainTextEdit, 'textEdit')def handleCalc(self):info = self.textEdit.toPlainText()male = ''female = ''for line in info.splitlines():if not line.strip():continueparts = line.split(' ')# 去掉列表中的空字符串内容parts = [p for p in parts if p]name, sex = partsif int(sex) == 0:male += name + '\n'else:female += name + '\n'QMessageBox.about(self.ui,'统计结果',f'''男性有:\n{male}\n女性有:\n{female}''')app = QApplication([])
stats = Sex()
stats.ui.show()
app.exec_()
运行后就和刚开始的效果一样了。算是真正完成了pyside2
的hello world。
♒总结♒
本专栏的第一篇博客正式完成,也算是阔别大半年重新打开CSDN了,明显感觉写的没之前那么顺畅了,,,, 只能说后面也要好好加油了,人生还很长,还是要保持一点少年心气。如果有写的不好的地方也是欢迎读者老师提出。
相关文章:
|从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面
🐑 |从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面🐑 文章目录 🐑 |从零开始的Pyside2界面编程| 环境搭建以及第一个ui界面🐑♈前言♈♈Pyside2环境搭建♈♈做个简单的UI界面♈♒代码实现♒♒QTdesigner设计UI界面♒ ♒总…...
【爬虫】DrissionPage-7
官方文档: https://www.drissionpage.cn/browser_control/get_page_info/ 1. 页面信息 📌 html 描述:返回当前页面的 HTML 文本。注意:不包含 <iframe> 元素的内容。返回类型:str 示例: html_co…...
系统架构设计(十二):统一过程模型(RUP)
简介 RUP 是由 IBM Rational 公司提出的一种 面向对象的软件工程过程模型,以 UML 为建模语言,是一种 以用例为驱动、以架构为中心、迭代式、增量开发的过程模型。 三大特征 特征说明以用例为驱动(Use Case Driven)需求分析和测…...
深入解析Java事件监听机制与应用
Java事件监听机制详解 一、事件监听模型组成 事件源(Event Source) 产生事件的对象(如按钮、文本框等组件) 事件对象(Event Object) 封装事件信息的对象(如ActionEvent包含事件源信息…...
QT聊天项目DAY11
1. 验证码服务 1.1 用npm安装redis npm install redis 1.2 修改config.json配置文件 1.3 新建redis.js const config_module require(./config) const Redis require("ioredis");// 创建Redis客户端实例 const RedisCli new Redis({host: config_module.redis_…...
Python训练营---Day29
知识点回顾 类的装饰器装饰器思想的进一步理解:外部修改、动态类方法的定义:内部定义和外部定义 作业:复习类和函数的知识点,写下自己过去29天的学习心得,如对函数和类的理解,对python这门工具的理解等&…...
Flask-SQLAlchemy_数据库配置
1、基本概念(SQLAlchemy与Flask-SQLAlchemy) SQLAlchemy 是 Python 生态中最具影响力的 ORM(对象关系映射)库,其设计理念强调 “框架无关性”,支持在各类 Python 项目中独立使用,包括 Flask、D…...
世界银行数字经济指标(1990-2022年)-社科数据
世界银行数字经济指标(1990-2022年)-社科数据https://download.csdn.net/download/paofuluolijiang/90623839 https://download.csdn.net/download/paofuluolijiang/90623839 此数据集涵盖了1990年至2022年间全球各国的数字经济核心指标,数据…...
Redis进阶知识
Redis 1.事务2. 主从复制2.1 如何启动多个Redis服务器2.2 监控主从节点的状态2.3 断开主从复制关系2.4 额外注意2.5拓扑结构2.6 复制过程2.6.1 数据同步 3.哨兵选举原理注意事项 4.集群4.1 数据分片算法4.2 故障检测 5. 缓存5.1 缓存问题 6. 分布式锁 1.事务 Redis的事务只能保…...
NY337NY340美光固态颗粒NC010NC012
NY337NY340美光固态颗粒NC010NC012 在存储技术的浩瀚星空中,美光的NY337、NY340、NC010、NC012等固态颗粒宛如璀璨星辰,闪耀着独特的光芒。它们承载着先进技术与无限潜力,正深刻影响着存储行业的格局与发展。 一、技术架构与核心优势 美光…...
DAY26 函数定义与参数
浙大疏锦行-CSDN博客 知识点回顾: 1.函数的定义 2.变量作用域:局部变量和全局变量 3.函数的参数类型:位置参数、默认参数、不定参数 4.传递参数的手段:关键词参数 5.传递参数的顺序:同时出现三种参数类型时 函数的定义…...
系统安全及应用
目录 一、账号安全控制 1.基本安全措施 (1)系统账号清理 (2)密码安全控制 (3)历史命令,自动注销 2.用户提权和切换命令 2.1 su命令用法 2.2 sudo命令提权 2.3通过是sudo执行特权命令 二、系统引导和登录控制…...
微信小程序 地图 使用 射线法 判断目标点是否在多边形内部(可用于判断当前位置是否在某个区域内部)
目录 射线法原理简要逻辑代码 小程序代码调试基础库小程序配置地图数据地图多边形点与多边形关系 射线法 原理 使用射线法来判断,目标点是否在多边形内部 这里简单说下,具体细节可以看这篇文章 平面几何:判断点是否在多边形内(…...
第三十七节:视频处理-视频读取与处理
引言:解码视觉世界的动态密码 在数字化浪潮席卷全球的今天,视频已成为信息传递的主要载体。从短视频平台的爆火到自动驾驶的视觉感知,视频处理技术正在重塑人类与数字世界的交互方式。本指南将深入探讨视频处理的核心技术,通过Python与OpenCV的实战演示,为您揭开动态影像…...
什么是 Flink Pattern
在 Apache Flink 中,Pattern 是 Flink CEP(Complex Event Processing)模块 的核心概念之一。它用于定义你希望从数据流中检测出的 事件序列模式(Event Sequence Pattern)。 🎯 一、什么是 Flink Pattern&am…...
ADB基本操作和命令
1.ADB的含义 adb 命令是 Android 官方提供,调试 Android 系统的工具。 adb 全称为 Android Debug Bridge(Android 调试桥),是 Android SDK 中提供的用于管理 Android 模拟器或真机的工具。 adb 是一种功能强大的命令行工具&#x…...
NSString的三种实现方式
oc里的NSString有三种实现方式,为_ _NSCFConstantString、__NSCFString、NSTaggedPointerString 1._ _NSCFConstantString(字面量字符串) 从字面意思上可以看出,_ _NSCFContantString可以理解为常量字符串,这种类型的字符串在编译期就确定了…...
2025年PMP 学习二十 第13章 项目相关方管理
第13章 项目相关方管理 序号过程过程组过程组1识别相关方启动2规划相关方管理规划3管理相关方参与与执行4监控相关方参与与监控 相关方管理,针对于团队之外的相关方的,核心目标是让对方为了支持项目,以达到项目目标。 文章目录 第13章 项目相…...
学习黑客Kerberos深入浅出:安全王国的门票系统
Kerberos深入浅出:安全王国的门票系统 🎫 作者: 海尔辛 | 发布时间: 2025-05-18 🔑 理解Kerberos:为什么它如此重要? Kerberos是现代网络环境中最广泛使用的身份验证协议之一,尤其在Windows Active Dire…...
蓝桥杯19681 01背包
问题描述 有 N 件物品和一个体积为 M 的背包。第 i 个物品的体积为 vi,价值为 wi。每件物品只能使用一次。 请问可以通过什么样的方式选择物品,使得物品总体积不超过 M 的情况下总价值最大,输出这个最大价值即可。 输入格式 第一行输…...
使用 Auto-Keras 进行自动化机器学习
使用 Auto-Keras 进行自动化机器学习 了解自动化机器学习以及如何使用 auto-keras 完成它。如今,机器学习并不是一个非常罕见的术语,因为像 DataCamp、Coursera、Udacity 等组织一直在努力提高他们的效率和灵活性,以便将机器学习的教育带给普…...
算法刷题Day9 5.18:leetcode定长滑动窗口3道题,结束定长滑动窗口,用时1h
12. 1852.每个子数组的数字种类数 1852. 每个子数组的数字种类数 - 力扣(LeetCode) 思想 找到nums 所有 长度为 k 的子数组中 不同 元素的数量。 返回一个数组 ans,其中 ans[i] 是对于每个索引 0 < i < n - k,nums[i..(i …...
Protect Your Digital Privacy: Obfuscate, Don’t Hide
Protect Your Digital Privacy: Obfuscate, Don’t Hide In today’s digital world, hiding completely online is nearly impossible. But you can protect yourself by deliberately obfuscating your personal information — making it harder for others to track, pro…...
Spark 的运行模式(--master) 和 部署方式(--deploy-mode)
Spark 的 运行模式(--master) 和 部署方式(--deploy-mode),两者的核心区别在于 资源调度范围 和 Driver 进程的位置。 一、核心概念对比 维度--master(运行模式)--deploy-mode(部署…...
从零开始实现大语言模型(十五):并行计算与分布式机器学习
1. 前言 并行计算与分布式机器学习是一种使用多机多卡加速大规模深度神经网络训练过程,以减少训练时间的方法。在工业界的训练大语言模型实践中,通常会使用并行计算与分布式机器学习方法来减少训练大语言模型所需的钟表时间。 本文介绍PyTorch中的一种…...
生产模式下react项目报错minified react error #130的问题
这天,线上突然出现了一个bug,某个页面打开空白,看控制台报错minified react error #130,在本地看却是正常的,百思不得其解。 后来发现是由于线上项目它的包更新过了,而我本地的包没有更新,所以我…...
本地无损放大软件-realesrgan-gui
—————【下 载 地 址】——————— 【本章下载一】:https://drive.uc.cn/s/84516041df174 【本章下载二】:https://pan.xunlei.com/s/VOQDybD4ruF0-m8UJrCF-HtLA1?pwdxz9e# 【百款黑科技】:https://ucnygalh6wle.feishu.cn/wiki/…...
Java面试深度解析:微服务与云原生技术应用场景详解
Java面试深度解析:微服务与云原生技术应用场景详解 面试场景 面试官:我们今天的面试会围绕微服务与云原生技术展开,结合一个在线教育平台的业务场景进行提问。希望你放松心态,正常发挥。 码农明哥:好的好的…...
短剧小程序系统开发源码上架,短剧项目市场分析
引言 随着短视频内容消费的爆发式增长,短剧小程序凭借其碎片化、强互动、低成本的特点,成为内容创业与资本布局的新风口。2024年以来,行业规模突破500亿元,预计2027年将超千亿17。本文将深度解析短剧小程序系统开发的技术优势、市…...
常见的请求头(Request Header)参数
1. Accept 作用:告知服务器客户端支持的响应数据格式(如 JSON、XML、HTML)。示例:Accept: application/json(优先接收 JSON 格式数据)。 2. Content-Type 作用:说明请求体的数据格式(…...
渗透测试核心技术:内网渗透与横向移动
内网渗透是红队行动的关键阶段,攻击者通过突破边界进入内网后,需快速定位域控、横向移动并维持权限。本节从内网环境搭建、信息收集、横向移动技巧到权限维持工具,系统讲解如何在内网中隐蔽行动并扩大战果。 1. 内网环境搭建与基础配置 目标: 模拟真实企业网络,构建包含…...
2025/5/18
继续研究一下大佬的RAG项目。开始我的碎碎念。 RAG可以分成两部分:一个是问答,一个是数据处理。 问答是人提问,然后查数据库,把查的东西用大模型组织成人话,回答人的提问。 数据处理是把当下知识库里的东西…...
使用国内源加速Qt在线安装
简介: 在线安装Qt时,会发现下载非常缓慢,可以用过使用国内镜像源来加速安装过程。 在线安装包的下载过程: 1,打开下载页面 https://www.qt.io/download-open-source 2,点击 Download the Qt online ins…...
【图像生成大模型】HunyuanVideo:大规模视频生成模型的系统性框架
HunyuanVideo:大规模视频生成模型的系统性框架 引言HunyuanVideo 项目概述核心技术1. 统一的图像和视频生成架构2. 多模态大语言模型(MLLM)文本编码器3. 3D VAE4. 提示重写(Prompt Rewrite) 项目运行方式与执行步骤1. …...
Java IO流(超详细!!!)
Java IO流 文章目录 Java IO流1.文件相关基础普及1.1 常用文件操作1.3 目录的操作和文件删除 2.IO流原理及流的分类2.1 字节流2.1.1 InputStream:字节输入流2.1.2 OutputStream 2.2 字符流2.2.1 Reader2.2.1 Writer 2.3 节点流和处理流2.3.1节点流2.3.2 处理流2.3.2…...
规则联动引擎GoRules初探
背景说明 嵌入式设备随着物联网在生活和生产中不断渗透而渐渐多起来,数据的采集、处理、分析在设备侧的自定义配置越来越重要。一个可通过图形化配置的数据处理过程,对于加速嵌入式设备的功能开发愈发重要。作为一个嵌入式软件从业者,笔者一…...
Android开发-翻页类视图
在Android应用中,翻页类视图(Paging Views) 是一种非常直观且用户友好的方式来展示内容。无论是用于展示图片轮播、引导页还是分页加载数据列表,翻页效果都能极大地提升用户体验。本文将介绍几种实现翻页效果的常见组件和方法&…...
高能数造闪耀 CIBF 2025,以创新技术引领新能源智造新征程
在全球新能源产业加速发展的关键节点,CIBF 2025 展会成为行业技术与成果交流的重要平台。高能数造(西安)技术有限公司深度参与此次盛会,凭借在新能源电池智能制造领域的深厚积累与创新突破,为行业发展注入强劲动力&…...
数据结构与算法——栈和队列
栈和队列 栈概念与结构栈的实现栈的初始化栈的销毁判断栈是否为空入栈出栈取栈顶元素栈中有效元素个数 队列概念与结构队列的实现队列结点结构队列结构初始化队列队列判空销毁队列入队列,队尾出队列,队头取队头数据取队尾数据队列有效数据个数 栈 概念与…...
新电脑软件配置三 pycharm
快捷键放大和缩小字体 按住ctrl鼠标滚轮向上 缩小同理...
浅入ES5、ES6(ES2015)、ES2023(ES14)版本对比,及使用建议---ES6就够用(个人觉得)
JavaScript(ECMAScript)的发展经历了多个版本,每个版本都引入了新特性和改进。以下仅是对三个常用版本(ES5、ES6(ES2015) 和 ES2023)的基本对比及使用建议: 目前常见项目中还是用ES6…...
【Odoo】Pycharm导入运行Odoo15
【Odoo】Pycharm导入运行Odoo15 前置准备1. Odoo-15项目下载解压2. PsrtgreSQL数据库 项目导入运行1. 项目导入2. 设置项目内虚拟环境3. 下载项目中依赖4. 修改配置文件odoo.conf 运行Pycharm快捷运行 前置准备 1. Odoo-15项目下载解压 将下载好的项目解压到开发目录下 2. …...
【运营商查询】批量手机号码归属地和手机运营商高速查询分类,按省份城市,按运营商移动联通电信快速分类导出Excel表格,基于WPF的实现方案
WPF手机号码归属地批量查询与分类导出方案 应用场景 市场营销:企业根据手机号码归属地进行精准营销,按城市或省份分类制定针对性推广策略客户管理:快速对客户手机号码进行归属地分类,便于后续客户关系管理数…...
中级统计师-统计学基础知识-第四章 假设检验
一、假设检验的基本原理 1. 基本思想 反证法:假设原假设成立,通过样本矛盾性进行反驳小概率原理:设定显著性水平 α \alpha α(通常取 0.05),若观测结果的概率 p ≤ α p \leq \alpha p≤α,…...
等于和绝对等于的区别
1. (等于) 特点:比较时会自动进行类型转换(隐式转换),尝试将两边的值转为相同类型后再比较。规则: 如果类型相同,直接比较值。如果类型不同,按以下规则转换: …...
家庭关系处理个人总结
首先要说到前面的是,每个家庭的成员背景环境经济状况不同,原生家庭差异,导致面临具体问题是不同的。就类似软件“没有银弹”的概念,没有一种方法可以解决每个人问题。 举个例子,面对婆媳矛盾 网上父辈的人 会说 百行孝…...
【Python训练营打卡】day29 @浙大疏锦行
DAY 29 复习日 知识点回顾 1. 类的装饰器 2. 装饰器思想的进一步理解:外部修改、动态 3. 类方法的定义:内部定义和外部定义 作业:复习类和函数的知识点,写下自己过去29天的学习心得,如对函数和类的理解,…...
React 19版本refs也支持清理函数了。
文章目录 前言一、refs 支持清理函数二、案例演示1.useEffect写法2.React 19改进 的ref写法 总结 前言 React 19版本发布了ref支持清理函数了,这样就可以达到useEffect一样的效果了。为啥需要清理函数呢,这是因为节约内存。 清理事件监听(避…...
uniapp的适配方式
文章目录 前言✅ 一、核心适配方式对比📏 二、rpx 单位:uni-app 的核心适配机制🧱 三、默认设计稿适配(750宽)🔁 四、字体 & 屏幕密度适配🛠 五、特殊平台适配(底部安全区、刘海…...
Java面试场景:从音视频到AI应用的技术探讨
面试场景:音视频与AI应用技术的碰撞 在某互联网大厂的面试中,面试官王先生与求职者明哥展开了一场关于音视频技术与AI应用的对话。 第一轮提问:音视频场景 面试官:明哥,你能谈谈在音视频场景中,Spring B…...