当前位置: 首页 > news >正文

PyQt5基本窗口控件(QWidget)

QWidget

基础窗口控件QWidget类是所有用户界面对象的基类,所有的窗口和控件都直
接或间接继承自QWidget类。

窗口控件(Widget,简称“控件”)是在PyQt中建立界面的主要元素。在PyQt
中把没有嵌入到其他控件中的控件称为窗口,一般窗口都有边框、标题栏:窗口是
指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最小化按钮、

最大化按钮等;控件是指按钮、复选框、文本框、表格、进度条等这些组成程序的
基本元素。一个程序可以有多个窗口,一个窗凵也可以有多个控件。

窗口坐标系统

PyQt使用统一的坐标系统来定位窗口控件的位置和大小。具体的坐标系统如
图4-7所示。

image

以屏幕的左上角为原点,即(0,0)点,从左向右为轴正向,从上向下为,轴正
向,整个屏幕的坐标系统就用来定位顶层窗囗的。

此外,在窗口内部也有自己的坐标系统,该坐标系统仍然以左上角作为原点,
从左向右为x轴正向,从上向下为轴正向,原点、轴、轴围成的区域叫作CIient
Area(客户区),在客户区的周围则是标题栏(WindowTitIe)和边框(Frame)。

如图4-8所示是Qt提供的分析QWidget几何结构的一张图,在帮助文档的
"Window and Dialog Widgets”中可以找到相关的内容介绍。

image
从图4-8可以看出,这些成员函数分为三类 。
QWidget直接提供的成员函数:x()、y()获得窗口左上角的坐标,width()、height()
获得客户区的宽度和高度。
QWidget的geomtry()提供的成员函数:x()、y()获得客户区左上角的坐标,
width()、height()获得客户区的宽度和高度。
QWidget的frameGeometry()提供的成员函数:x()、y()获得窗囗左上角的坐标,
width()、height()获得包含客户区、标题栏和边框在内的整个窗口的宽度和高度。

常用的几何机构

从图4-8可以看出,QWidget有两种常用的几何结构。
不包含外边各种边框的几何结构。
包含外边各种边框的几何结构。

QWidget不包含边框的常用函数

一般情况下,不包含边框的部分是客户区,这里面就是我们正常操作的地方,
可以添加子控件这部分是一个长方形,会有大小和位置.大小就是指宽度(width)
和高度(height);位置就是指这个长方形在屏幕上的位置。在Qt中保存这个长方形
使用的是QRect类,这个类也有自己的大小和位置。要改变其大小和位置,可以使
用如下几个函数。

改变客户区的面积
QWidget.resize(width,height)
QWidget.resize(QSize)

这两个函数改变了长方形的大小,其中第一个参数是宽度,第二个参数是高度。
设置了大小的窗口,还可以用鼠标来改变它的大小。

获得客户区的大小
QWidget.size()
获得客户区的宽度和高度
QWidget.width()
QWidget.height()
设置客户区的宽度和高度
QWidget.setFixedWidth(int width)

使用这个函数,客户区的高度就是固定的,不可以改变,只可以改变宽度。

QWidget.setFixedHeight(int height)

这时候宽度就是固定的,不可以改变,但是可以改变高度。

QWidget.setFixedSize(QSize size)
QWidget.setFixedSize(int width,int height)

通过上面这两个函数,高度和宽度都是固定的,不可以通过鼠标来改变窗口的
宽度和高度。如果要同时改变客户区的大小和位置,需要用到以下函数。

QWidget.setGeometry(int x,int y,int width,int height)
QWidget.setGeometry(QRect rect)

x和y对应的就是x和y坐标。可以不单独设置攴和y坐标。

QWidget包含边框的常用函数

QWidget包含边框,这个边框有大小和位置,是窗口在屏幕上显示的整个区域。
这里没有设置这个边框大小的函数,因为通过上面不包含边框函数的设置,就
可以设置包含边框的大小了。通过下面的函数,可以获得整个窗口的位置和大小。

获得窗口的大小和位置
QWidget.frameGeometry()
设置窗口的位置
QWidget.move(int x,int y)
QWidget.move(QPoint point)
获得窗口左上角的坐标
QWidget.pos()

屏幕坐标系统显示

from PyQt5.QtWidgets import QApplication,QWidget,QPushButton
import sysapp=QApplication(sys.argv)
widget=QWidget()
btn=QPushButton(widget)
btn.setText("Button")
# 以QWidget左上角为(0,0)点
btn.move(20,20)
# 不同操作系统可能对窗口最小宽度有规定,若设置宽度小于规定值,则会以规定值进行显示
widget.resize(300,200)
# 以屏幕左上角(0,0)点
widget.move(250,200)widget.setWindowTitle('PyQt坐标系统例子')
widget.show()
print("#1 QWidget")
print("widget.x()=%d"%widget.x())
print("widgt.y()=%d"%widget.y())
print("widget.width()%d"%widget.width())
print("widget.height()%d"%widget.height())print("#2 QWidget.geometry")
print("widget.geometry().x()=%d" %  widget.geometry().x() )
print("widget.geometry().y()=%d" %  widget.geometry().y() )
print("widget.geometry().width()=%d" %  widget.geometry().width() )
print("widget.geometry().height()=%d" %  widget.geometry().height() )
print("widget.size().width() =%d" %  widget.size().width() )
print("widget.size().height() =%d" %  widget.size().height() )print("#3 QWidget.frameGeometry")
print("widget.frameGeometry().width()=%d" %  widget.frameGeometry().width() )
print("widget.frameGeometry().height()=%d" %  widget.frameGeometry().height() )
print("widget.pos().x()=%d" %  widget.pos().x() )
print("widget.pos().y()=%d" %  widget.pos().y() )sys.exit(app.exec_())  

输出结果及截图

#1 QWidget
widget.x()=250
widgt.y()=200
widget.width()300
widget.height()200
#2 QWidget.geometry
widget.geometry().x()=251
widget.geometry().y()=238
widget.geometry().width()=300
widget.geometry().height()=200
widget.size().width() =300
widget.size().height() =200
#3 QWidget.frameGeometry
widget.frameGeometry().width()=302
widget.frameGeometry().height()=239
widget.pos().x()=250
widget.pos().y()=200

image

创建第一个PyQt5应用

下面的示例代码非常简单,只是显示一个小窗口。可以对窗口进行操作,比如
修改它的大小、最大化、最小化等。在很多程序中都需要进行这些操作,PyQt己经
写好了这些操作的代码,我们只需要引入封装好的代码就可以了。这些代码对程序
员来说是隐藏的。PyQt就是一个抽象的工具包,如果使用底层的工具包(Win32
MFC)来实现相同的功能,这个示例代码就会增加很多。

建立一个主窗口

import  sys
from PyQt5.QtWidgets import QApplication,QWidgetapp=QApplication(sys.argv)
window=QWidget()
window.resize(300,200)
window.move(250,150)
window.setWindowTitle('Hello PyQt5')
window.show()
sys.exit(app.exec_())

image
代码分析:

# -*- coding:UTF-8 - *-

这行代码是为了避免在所生成的PyQt程序中出现中文乱码问题。

什么是UTF-8?
UTF-8(8-bit Unicode TransformationFormat)是一种针对Unicode的可变长
度字符编码,又称“万国码”,由Ken Thompson于1992年创建,现在已经标准化
为RFC 3629。UTF-8用1~4个字节编码Unicode字符,用在网页上可以统一页面
显示中文简体/繁体及其他语言(如英文、日文、韩文)0提倡使用UTF-8编码方案,
这样PyQt程序就可以在多个平台(如Windows、Linux等)下正常显示中文了。

import  sys
from PyQt5.QtWidgets import QApplication,QWidget

这两行代码用来载入必需的模块。在Qt5中使用的基本的GUI窗口控件都在
PyQt5.QtWidgets模块中。

app=QApplication(sys.argv)

每一个PyQt程序都需要有一个QApplication对象,QApplication类包含在
QTWidgets模块中。sys.argv是一个命令行参数列表。Python脚本可以从Shell中执
行,比如双击.PY脚本文件,通过参数来选择启动脚本的方式。

window=QWidget()

QWidget控件是PyQt5中所有用户界面类的父类。这里使用了没有参数的默认
构造函数,它没有继承其他类。我们称没有父类的控件为窗口。
需要注意的是,窗口和控件都继承自QWidget类,如果不为控件指定一个父对
象,那么该控件就会被当作窗口处理,这时setWindowTitle()和setWindowlcon()函
数就会生效。

window.resize(300,200)

使用size()方法可以改变窗口控件的大小,在这里设置窗口的宽度为300像素,
高度为200像素。

使用move()方法可以设置窗口初始化的位置(x,y)。
窗口的坐标系统就像手机屏幕一样,在IOS、Android和Windows Phone的UI
坐标布局中:
坐标系统在屏幕左上角,(0,0)为原点。
x是从左到右递增的。
y是从上到下递增的。
显示效果如4-11所示。

window.setWindowTitle('Hello PyQt5')

这行代码用来设置窗口控件的标题,该标题将在窗凵的标题栏中显示。

window.show()

使用show()方法将窗口控件显示在屏幕上。

sys.exit(app.exec_())

最后进入该程序的主循环。事件处理从本行代码开始,主循环接收事件消息并
将其分发给程序的各个控件。如果调用exit()或主控件被销毁,主循环就会结束。
使用sys.exit()方法退出可以确保程序完整地结束,在这种情况下系统的环境变量会
记录程序是如何退出的。

如果程序运行成功,那么exec_()的返回值为0,否则为非0。

最后进入该程序的主循环。事件处理从本行代码开始,主循环接收事件消息并
将其分发给程序的各个控件。如果调用exit()或主控件被销毁,主循环就会结束。
使用sys.exit()方法退出可以确保程序完整地结束,在这种情况下系统的环境变量会
记录程序是如何退出的。

为什么程序主函数的返回值为0?
无论是C还是C++,从main函数返回的结果都相当于调用了exit函数,main
的返回值会作为传给exit函数的参数。
exit对参数的说明如下:
如果参数为0或EXIT_SUCCESS,则向外部环境报告程序运行圆满结束。
如果参数为EXIT_FAILURE,则向外部环境报告程序运行以失败告终。
如果参数为其他值,则结果由实现定义。
所以,return 0是有确定语义的返回方式,而return 1则不具备可移植性。PyQt
5的底层使用的就是C++,所以不难理解为什么主函数执行成功后exec_()的返回
值为0了。

有关exec_()的下画线问题解释如下:
QApplication类的exec_()函数来自于PyQt4及前版本,因为在Python2中,
exec是Python的关键字,为避免冲突,PyQt5使用了exec_()这个名称·这个问题在Python3中己经解决,所以如果你的代码只在Python3下运行,那么完全可以写成.

app.exec_()

当然,为了保持向后兼容,带有下画线的函数还是可以使用的,在本书后面的
代码中将保持这种风格。

上一节中我们学习了如何创建一个最简单的PyQt5应用,在这一节中将介绍如
何为PyQt5应用添加个性化图标。

程序图标就是一个小图片,通常显示在标题栏的左上角。本书中所有PyQt应用
使用的图标,都是从easyicon网站(http://www.easyicon.net/)免费下载的。easyicon
网站提供了超过50万个PNG、ICO、ICNS格式的图标搜索、图标下载服务,可以
免费使用。

设置程序图标

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QWidget,QApplicationclass Icon(QWidget):def __init__(self,parent=None):super(Icon,self).__init__(parent)self.initUI()def initUI(self):self.setGeometry(300,300,250,150)self.setWindowTitle('演示程序图标例子')self.setWindowIcon(QIcon('./images/cartoon1.ico'))if __name__ == '__main__':app=QApplication(sys.argv)icon=Icon()icon.show()sys.exit(app.exec_())

运行效果

image
第一个PyQt5应用示例代码是采用面向过程的风格编写的,而这个应用示例代
码采用的是面向对象的风格,Python同时支持面向过程和面向对象编程。PyQt编程
的精髓是面向对象编程,这意味着在随后的开发中将转向面向对象的编程风格。

在面向对象编程中最重要的是类、属性和方法。在第1组代码中,创建了一个
名为lcon的新类,该类继承自QWidget类,因此必须调用两个构造函数——-Icon的
构造数和继承类QWidget的构造函数。

在第2组代码中,定义了初始化界面方法initUI(),使用QWidget类的setGeometry()
方法完成了两个功能一一设置窗口在屏幕上的位置和设置窗口本身的大小。它的前
两个参数是窗口在屏幕上的x和y坐标;后两个参数是窗囗本身的宽度和高度。

使用setWindowIcon()方法来设置程序图标,它需要一个QIcon类型的对象作为
参数。在调用QIcon构造函数时,我们需要提供图标路径(相对路径或绝对路径)。
同时注意,使用QIcon类型必须导入此模块:fromPyQt.QtGui import QIcon。

显示气泡提示信息

在设计界面时应尽可能人性化,对于关键的操作,给出相关信息的提示会非常
有用。

import sys
from PyQt5.QtWidgets import QWidget, QToolTip , QApplication
from PyQt5.QtGui import QFontclass Winform(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):QToolTip.setFont(QFont('SansSerif', 10))self.setToolTip('这是一个<b>气泡提示</b>')self.setGeometry(200, 300, 400, 400)self.setWindowTitle('气泡提示demo')           if __name__ == '__main__':app = QApplication(sys.argv)win = Winform()win.show()sys.exit(app.exec_())

代码分析:
在本例中,我们为一个QWidget类型的窗口控件设置气泡提示。

self.setToolTip('这是一个<b>气泡提示</b>')

要创建工具提示,则需要调用setToolTip()方法,该方法接受富文本格式的参数。

QToolTip.setFont(QFont('SansSerif', 10))

通过此行语句设置气泡提示信息的字体与字号大小。

相关文章:

PyQt5基本窗口控件(QWidget)

QWidget 基础窗口控件QWidget类是所有用户界面对象的基类&#xff0c;所有的窗口和控件都直 接或间接继承自QWidget类。 窗口控件&#xff08;Widget&#xff0c;简称“控件”&#xff09;是在PyQt中建立界面的主要元素。在PyQt 中把没有嵌入到其他控件中的控件称为窗口&…...

双目视觉系统中,极线校正(Epipolar Rectification)与单应性矩阵/多平面单应性模型

在双目视觉系统中&#xff0c;极线校正&#xff08;Epipolar Rectification&#xff09;的目标是使左右图像的对应点位于同一水平线上&#xff0c;从而简化立体匹配的搜索过程。标准的双目相机标定和校正流程&#xff0c;其核心原理与单应性矩阵的应用方式如下&#xff1a; 1. …...

【部署】win10的wsl环境下调试dify的api后端服务

回到目录 标题&#xff1a;win10的wsl环境下&#xff0c;远程调试dify的api后端服务 0. 上一篇讲解web前端服务的启动方法&#xff0c;本篇内容是vscode的调试模式启动api后端服务。文章4000字左右&#xff0c;阅读时间15-20分钟。 dify官方运行环境要求较低2U4G&#xff0c…...

学习黑客了解Python3的“HTTPServer“

5 分钟深入浅出理解Python3的"HTTPServer"模块 &#x1f310; 大家好&#xff01;今天我们将探索Python3中的HTTPServer模块——一个简单却强大的工具&#xff0c;它允许你快速创建web服务器。在网络安全学习、渗透测试和CTF挑战中&#xff0c;这个模块常被用来搭建…...

结合 ECharts / Ant Design Blazor 构建高性能实时仪表盘

&#x1f4ca; 结合 ECharts / Ant Design Blazor 构建高性能实时仪表盘 文章目录 &#x1f4ca; 结合 ECharts / Ant Design Blazor 构建高性能实时仪表盘一、前言 &#x1f50d;二、技术选型 &#x1f9f0;三、项目配置与架构 &#x1f3d7;️&#x1f310; 系统整体架构流程…...

刘强东杀入自动驾驶!京东注册“Joyrobotaxi”商标

又一个互联网大佬杀入汽车赛道&#xff01;这一次&#xff0c;是京东的刘强东。5月6日&#xff0c;京东集团旗下公司一口气申请注册了多个名为"Joyrobotaxi"的商标&#xff0c;国际分类涵盖运输工具、科学仪器等核心领域。这一动作被业界普遍解读为&#xff1a;京东要…...

JavaScript基础-switch分支流程控制

在JavaScript编程中&#xff0c;switch语句提供了一种清晰、简洁的方式来实现多路分支选择。相比于多个if...else if语句&#xff0c;switch语句可以使代码更加易读和易于维护&#xff0c;尤其是在需要根据单个变量或表达式的值进行不同路径选择时尤为有用。本文将详细介绍swit…...

MySQL:视图

目录 一、什么是视图 二、视图的创建和使用 三、修改数据 &#xff08;1&#xff09;修改真实表 &#xff08;2&#xff09;修改视图 四、删除视图 五、视图的优点 一、什么是视图 视图是一个虚拟的表&#xff0c;它是基于一个或多个基本表或其他视图的查询结果集。视…...

05 mysql之DDL

一、SQL的四个分类 我们通常可以将 SQL 分为四类&#xff0c;分别是&#xff1a; DDL&#xff08;数据定义语言&#xff09;、DML&#xff08;数据操作语言&#xff09;、 DCL&#xff08;数据控制语言&#xff09;和 TCL&#xff08;事务控制语言&#xff09;。 DDL 用于创建…...

各国GDP变化趋势网页特效(实用动态图表)完整实例

https://download.csdn.net/download/YUJIANYUE/90803109...

【部署】win10的wsl环境下启动dify的web前端服务

回到目录 标题&#xff1a;win10的wsl环境下启动dify的web前端服务 0. 官网安装指引 官网有详细的源代码部署说明&#xff0c;参考: https://docs.dify.ai/en/getting-started/install-self-hosted/local-source-code 1. 安装nodejs 1.1. 下载和解压文件 参考:https://no…...

Veins同时打开SUMO和OMNeT++的GUI界面

进入 Veins 工程目录&#xff08;即包含 sumo-launchd.py 的目录&#xff09;&#xff0c;打开终端设置 SUMO_HOME 环境变量&#xff08;指向你安装的 SUMO 路径&#xff09;&#xff1a; export SUMO\_HOME/home/veins/src/sumo-1.11.0编译 Veins 工程&#xff08;包含 OMNeT…...

模型 启动效应

系列文章分享模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。刺激先行激活&#xff0c;后续认知更顺畅。 1 启动效应的应用 1.1 求职面试中对面试官的影响 背景&#xff1a;一家知名公司在招聘过程中发现&#xff0c;面试官对候选人的评价往往受到多种因素的影响…...

Android 使用Paging3 实现列表分页加载、下拉刷新、错误重试、筛选功能

Android 使用Paging3 实现列表加载 Paging3是Android Jetpack组件库中的分页加载库&#xff0c;它可以帮助开发者轻松实现列表数据的分页加载功能。本文将逐步讲解如何使用Paging3库实现一个带有加载更多、下拉刷新、错误重试、筛选功能的列表页面。 最终效果如下 加载更多、…...

SpringBoot2集成xxl-job详解

官方教程 搭建调度中心 Github Gitee 注&#xff1a;版本3.x开始要求Jdk17&#xff1b;版本2.x及以下支持Jdk1.8。如对Jdk版本有诉求&#xff0c;可选择接入不同版本 clone源代码执行xxl-job\doc\db\tables_xxl_job.sql # # XXL-JOB v2.4.1 # Copyright (c) 2015-present, x…...

洛图报告中的 FSHD 是什么?—— 解密九天画芯推动的三色光源显示技术

目录 一、洛图报告新焦点&#xff1a;FSHD 为何成为显示产业重要突破方向&#xff1f; &#xff08;一&#xff09;洛图报告核心结论&#xff1a;从技术突围到产业重构 二、技术解析&#xff1a;FSHD 如何重构显示底层逻辑&#xff1f; &#xff08;一&#xff09;物理架构…...

关于数据库查询速度优化

本人接手了一个关于项目没有任何文档信息的代码&#xff0c;代码也没有相关文档说明信息&#xff01;所以在做数据库查询优化的时候不敢改动。 原因1&#xff1a; 老板需要我做一个首页的统计查询。明明才几十万条数据&#xff0c;而且我加了筛选条件为什么会这么慢&#xff…...

两数相加(2)

2. 两数相加 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; class Solution { public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode * dummy new ListNode(0);int carry 0;ListNode * head dummy;while (l1 ! nullptr || l2 ! nullptr ||…...

车载学习(6)——CAPL(1)一些基础知识

1.一些CAPL的知识 CAPL通讯访问编程语言&#xff08;Commmunication Access Programming language&#xff09; CAPL的用途 ECU的仿真实现&#xff08;报文的收发、数据的处理&#xff09;实现总线日志纪录的控制实现总线数据自动化分析实现ECU功能的自动化测试实现ECU报文发…...

C++笔记-set和map的使用(包含multiset和multimap的讲解)

1.序列式容器和关联式容器 前面我们已经接触过STL中的部分容器如:string、vector、list、deque、array、forward_list等&#xff0c;这些容器统称为序列式容器&#xff0c;因为逻辑结构为线性序列的数据结构&#xff0c;两个位置存储的值之间一般没有紧密的关联关系&#xff0…...

GLPK(GNU线性规划工具包)介绍

GLPK全称为GNU Linear Programming Kit(GNU线性规划工具包)&#xff0c;可从 https://sourceforge.net/projects/winglpk/ 下载源码及二进制库&#xff0c;最新版本为4.65。也可从 https://ftp.gnu.org/gnu/glpk/ 下载&#xff0c;仅包含源码&#xff0c;最新版本为5.0。 GLPK是…...

技嘉主板BIOS升级

截图可能不同的BIOS长的不一样&#xff0c;但大概相同&#xff0c;BIOS不下错&#xff0c;逐个版本升级就没问题 准备工作 准备工作一个fat32格式的U盘&#xff0c;用来存放BIOS确认主板型号 和当前BIOS版本 方式1&#xff1a;去系统信息里面 方式2&#xff1a; 去BIOS设置…...

自定义类型:结构体进阶

一、结构体类型的声明 前⾯我们在学习操作符和初阶结构体的时候&#xff0c;已经学习了结构体的知识&#xff0c;这⾥稍微复习⼀下。 1.1结构体的回顾 结构是⼀些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2结构的声明 struct tag…...

linux perf top分析系统性能

1,看到内核宏是否支持perf功能 perf top -g 查看linux 内核宏定义 CONFIG_PERF_EVENTS=y CONFIG_HAVE_PERF_EVENTS=y CONFIG_FRAME_POINTER=y # 确保帧指针支持以捕获完整堆栈 2,使用perf top -g 报错 Access to performance monitoring and observability operations is l…...

串口屏调试 1.0

http://wiki.tjc1688.com 先把商家的链接贴过来 淘晶驰T1系列3.2寸串口屏tft液晶屏显示屏HMI触摸屏超12864液晶屏 这是主包的型号 打开这个玩意 有十个基本的功能区 新建工程 在界面的右边&#xff0c;指令一定要写在page前面&#xff0c;这里的波特率等等什么的都可以…...

Python面向对象编程:初识类与对象

面向对象编程(OOP)是Python编程中最重要的范式之一。本文将从零开始介绍Python中类和对象的基本概念&#xff0c;帮助初学者快速掌握面向对象编程的核心思想。 一、什么是面向对象编程&#xff1f; 面向对象编程(Object-Oriented Programming)是一种以"对象"为核心…...

局域网常用的测速工具,Iperf3使用教程

目录 下载方式 Windows Linux 使用方法&#xff1a;测试局域网带宽 步骤一&#xff1a;服务端准备 步骤二&#xff1a;客户端发起连接 步骤三&#xff1a;查看结果 参数说明 1. Iperf常用参数&#xff08;测试够用&#xff09; 2. 通用参数&#xff08;Server端和Cli…...

[架构之美]linux常见故障问题解决方案(十九)

[架构之美]linux下常见故障问题解决方案 一&#xff0c;文本文件忙 问题一&#xff1a;rootwh-VMware-Virtual-Platform:/home/hail# cp /root/containerd/bin/* /usr/bin/ cp: 无法创建普通文件 ‘/usr/bin/containerd’: 文本文件忙 在Linux系统中遇到“文本文件忙”错误时…...

Java与Go语言对比教程

Java vs. Go&#xff1a;程序员的双节棍与瑞士军刀之战 &#x1f3af; 先看一张灵魂对比图 &#x1f916; Java老大哥 &#x1f680; Go小钢炮 出生年份 1995&#xff08;中年稳健&#xff09; 2009&#xff08;年轻活力&…...

计算机大类专业数据结构下半期实验练习题

1068: 图的按录入顺序深度优先搜索 #include"iostream" using namespace std; #include"cstring" int visited[100]; char s[100]; int a[100][100]; int n; void dfs(int k,int n) {if(visited[k]0){visited[k]1;cout<<s[k];for(int i0;i<n;i){i…...

Android 关闭Activity切换过渡动画

Android 9.0以前关闭过渡动画效果只需要把开发者模式中过渡动画缩放设为0就可以。也就是把def_window_transition_scale改为0% frameworks/base/packages/SettingsProvider/res/values/defaults.xml <fraction name"def_window_transition_scale">100%<…...

iperf3的介绍与舒勇

在 CentOS 7 中使用 iperf3 进行网络性能测试&#xff0c;分为客户端和服务器两部分。以下是使用步骤&#xff1a; 1. 安装 iperf3 首先&#xff0c;你需要在 CentOS 7 上安装 iperf3。可以通过以下命令进行安装&#xff1a; sudo yum install epel-release sudo yum install…...

Python 包管理新选择:uv

在 Python 中,uv 是由 Astral 公司开发的 Rust 高性能包管理工具,旨在替代传统 pip 并提供更快的依赖管理、Python 版本控制等功能。 https://github.com/astral-sh/uv 在 github 上已有 53k star 一、uv 的核心优势 极速性能:比 pip 快 10-100 倍。多版本 Python 管理:支…...

从需求到用例的AI路径:准确率与挑战

用工作流生成测试用例和自动化测试脚本&#xff01; 引言&#xff1a;用例的黄金起点 在软件工程中&#xff0c;“测试用例”是连接需求理解与质量保障之间的关键桥梁。一份高质量的测试用例&#xff0c;不仅是验证功能实现是否符合需求的工具&#xff0c;更是产品风险感知、用…...

JavaSE核心知识点02面向对象编程02-06(泛型)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 JavaSE核心知识点02面向对象编程02-06&#…...

xml与注解的区别

功能xml配置注解定义bean bean标签 id属性 class属性 Component Controller Service Repository ComponentScan 设置依赖注入 setter注入&#xff08;set方法&#xff09; 构造器注入&#xff08;构造方法&#xff09; Autowired Qualifier Value 配置第三方bean bean标签 静…...

进阶 DFS 学习笔记

字数&#xff1a;12017字。 文章盗的图注明了出处&#xff0c;全部出自 y 总的算法提高课。 不知道为啥这个时候才开始学这个东西&#xff0c;好像是很多同龄人都已经学完了。 进阶 DFS 具体来说好几个东西&#xff0c;所以可能内容有一些些多。 默认 DFS 和 BFS 已经掌握了…...

计算机设计大赛山东省赛区软件开发赛道线上答辩复盘

流程回顾&#xff1a; 1.抽签顺序&#xff1a; 抽签顺序并不一定代表是最终顺序&#xff0c;要注意看通知不要遗漏。 2.答辩形式&#xff1a; 线上答辩&#xff0c;加入腾讯会议&#xff0c;进会议时自己的备注是作品编号&#xff0c;等轮到自己组答辩时主持人会把人拉进来…...

第7次课 栈A

课堂学习 栈&#xff08;stack&#xff09; 是一种遵循先入后出逻辑的线性数据结构。 我们可以将栈类比为桌面上的一摞盘子&#xff0c;如果想取出底部的盘子&#xff0c;则需要先将上面的盘子依次移走。我们将盘子替换为各种类型的元素&#xff08;如整数、字符、对象等&…...

TXT编码转换工具iconv

iconv.exe是实现TXT编码转换的命令行工具&#xff0c;支持几百种编码格式的转换&#xff0c;利用它可以在自主开发程序上实现TXT文档编码的自动转换。 一、命令参数格式 Usage: iconv [-c] [-s] [-f fromcode] [-t tocode] [file ...] or: iconv -l 二、转换的示例 将UTF-8…...

基于Spring Boot + Vue的高校心理教育辅导系统

一、项目背景介绍 随着高校对学生心理健康教育的重视&#xff0c;传统的人工心理辅导与测评模式已经难以满足广大师生的个性化需求。为了提高心理服务的效率、便捷度和覆盖范围&#xff0c;本项目开发了一个高校心理教育辅导系统&#xff0c;集成心理评测、辅导预约、留言交流…...

关于甲骨文(oracle cloud)丢失MFA的解决方案

前两年&#xff0c;申请了一个招商的多币种信用卡&#xff0c;然后就从网上撸了一个oracle的免费1h1g的服务器。 用了一段时间&#xff0c;人家要启用MFA验证。 啥叫MFA验证&#xff0c;类似与短信验证吧&#xff0c;就是绑定一个手机&#xff0c;然后下载一个app&#xff0c;每…...

Linux系统管理与编程17:自动化部署ftp服务

兰生幽谷&#xff0c;不为莫服而不芳&#xff1b; 君子行义&#xff0c;不为莫知而止休。 #virtual用户管理&#xff1a;passerbyA、captain和admin三个虚拟用户 # passerbyA只能看&#xff0c;captain可看读写上传&#xff0c;但不能删除。admin全部权限 [rootshell shell]…...

C++STL——stack,queue

stack与queue 前言容器适配器deque 前言 本篇主要讲解stack与queue的底层&#xff0c;但并不会进行实现&#xff0c;stack的接口 queue的接口 &#xff0c;关于stack与queue的接口在这里不做讲解&#xff0c;因为通过前面的对STL的学习&#xff0c;这些接口都是大同小异的。 …...

HC-SR04超声波测距传感器

1.基本信息 供电电压5v,测量范围2cm~400cm,测量精度正负3mm&#xff0c;超声波频率40khz 2.连接引脚&#xff1a; 3.工作原理 TRIG引脚发送至少10us的高电平信号&#xff0c;ECHO引脚负责接受信号&#xff1b; 接受方式&#xff1a;计算测量高电平持续的时间&#xff0c;从一…...

内存安全暗战:从 CVE-2025-21298 看 C 语言防御体系的范式革命

引言 2025 年 3 月&#xff0c;美国 CERT 发布的《年度漏洞报告》揭示了触目惊心的数据&#xff1a;C/C 相关漏洞占全年高危漏洞的 68%&#xff0c;其中内存安全问题贡献了 92% 的远程代码执行风险。当 CVE-2025-21298 漏洞在某工业控制软件中被利用&#xff0c;导致欧洲某核电…...

Linux笔记---System V共享内存

1. System V共享内存简介 System V共享内存是一种在Linux系统中用于进程间通信的机制。顾名思义&#xff0c;就是申请一段可供多个进程共享的内存&#xff0c;以用于进程间通信&#xff0c;相对于管道机制要更加直接。 1.1 原理 System V共享内存通过创建和使用一个特定的IP…...

MySQL 1366 - Incorrect string value:错误

MySQL 1366 - Incorrect string value:错误 错误如何发生发生原因&#xff1a; 解决方法第一种尝试第二种尝试 错误 如何发生 在给MySQL添加数据的时候发生了下面的错误 insert into sys_dept values(100, 0, 0, 若依科技, 0, 若依, 15888888888, ryqq.com, 0,…...

慈缘基金会“蝴蝶飞”助西藏女孩白玛卓嘎“折翼重生”

历经六个月、178天的艰难治疗&#xff0c;来自西藏拉萨的15岁女孩白玛卓嘎&#xff0c;终于在4月底挺直脊梁&#xff0c;带着自信的笑容踏上了回家的路。这场跨越雪域高原与首都北京的“生命蜕变之旅”&#xff0c;不仅改写了这位藏族少女的人生轨迹&#xff0c;更见证了公益力…...

【生存技能】ubuntu 24.04 如何pip install

目录 原因解决方案说明 在接手一个新项目需要安装python库时弹出了以下提示: 原因 这个报错是因为在ubuntu中尝试直接使用 pip 安装 Python 包到系统环境中&#xff0c;ubuntu 系统 出于稳定性考虑禁止了这种操作 这里的kali是因为这台机器的用户起名叫kali,我也不知道为什么…...