【PyQt5教程 一】Qt Designer 安装及其使用方法说明,附程序源码

news2025/1/18 8:53:00

目录

一、PyQt5介绍:

(1)PyQt简介:

(2)PyQt API:

(3)支持的环境:

(4)安装:

(5)配置环境变量:

二、基础程序编写方法:

(1)函数式方法创建GUI:

(2)面向对象设计GUI:

三、PyQt5中的实用工具:

四、PyQt5中的类:

(1)PyQt5类的路径:

(2)PyQt5常用类的作用:

(3)PyQt5小部件列表:

五、Qt Designer使用教程:

(1)Qt Designer位置路径:

(2)Qt Designer界面介绍:

(3)控件工具箱介绍:

(4)对象查看器介绍:

(5)属性编辑器介绍:

(6)资源编辑器介绍:

(7)信号/槽编辑器介绍:

(8)动作编辑器介绍:

六、创建Qt Designer程序:

第一步:创建主窗口

第二步:添加小部件

第三步:调整小部件

第四步:保存.ui文件

 第五步:.ui转化为.py文件

​编辑

第六步:创建项目

第七步:编写程序 

 成果演示:


一、PyQt5介绍:

(1)PyQt简介:

  • PyQt是一个由RiverBank Computing Ltd开发的Python绑定,它提供了对功能强大的跨平台GUI库Qt的接口,用户可以从官方网站riverbankcomputing.com下载最新版本。

(2)PyQt API:

模块:PyQt API包含多个模块,每个模块提供不同的功能。

  • QtCore:核心非GUI类,被其他模块使用。
  • QtGui:包含所有图形用户界面组件。
  • 其他模块:包括QtMultimedia、QtNetwork、QtOpenGL、QtScript、QtSql、QtSvg、QtWebKit、QtXml等,用于处理多媒体、网络、OpenGL、脚本、数据库、SVG文件、HTML内容和XML等。

(3)支持的环境:

  • 操作系统:PyQt兼容Windows、Linux和Mac OS。
  • 许可:双重许可,可在GPL和商业许可下使用。
  • 最新版本:PyQt5-5.15.4。

(4)安装:

安装命令:使用清华大学的镜像链接来安装。

  • 使用pip安装PyQt5:
pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 安装开发工具(如Qt Designer):
pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple

(5)配置环境变量:

找到编辑系统环境变量界面,单击环境变量按钮,在系统变量Path中添加PyQt5和pyqt5-tools目录的绝对路径。 

二、基础程序编写方法:

(1)函数式方法创建GUI:

import sys
# 从PyQt5.QtWidgets/QtGui/QtCore,导入所有的类,对象,函数等
# 建议只导入所需的特定类和函数
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

# 定义函数,这个函数将创建和运行一个PyQt5的GUI程序
def Demo():
    # 创建一个QApplication对象,这是所有PyQt5应用程序的基础
    # sys.argv是一个列表,包含了命令行参数,QApplication会用它来处理这些参数
    app = QApplication(sys.argv)
    
    # 创建一个QWidget对象,它是一个基本的窗口组件
    Widget = QWidget()
    
    # 创建一个QLabel对象,它是一个用于显示文本或图片的标签
    # 并将其实例化为QWidget Widget的子组件
    Label = QLabel(Widget)
    
    # 设置标签Label的文本内容为"Demo"
    Label.setText("Demo")
    
    # 设置窗口Widget的大小和位置,参数分别是x坐标、y坐标、宽度和高度
    Widget.setGeometry(0,0,500,200)
    
    # 将标签Label在窗口Widget内部移动到坐标(50, 20)的位置
    Label.move(250,100)
    
    # 设置窗口Widget的标题为"PyQt5"
    Widget.setWindowTitle("Demo")
    
    # 显示窗口w
    Widget.show()
    
    # 启动应用程序的事件循环,app.exec_()会阻塞直到应用程序退出
    # sys.exit用来退出Python解释器,app.exec_()的返回值通常作为退出状态码传递给sys.exit
    sys.exit(app.exec_())

# 常用的Python模式,检查当前脚本是否作为主程序运行
# 如果是,就调用Demo函数
if __name__ == '__main__':
    Demo()

实现步骤: 

  • 导入模块:导入sys模块以及从PyQt5的QtCoreQtGuiQtWidgets模块导入所有类、对象和函数。
  • 定义Demo函数:定义一个名为Demo的函数,该函数负责创建和运行PyQt5 GUI程序。
  • 创建QApplication对象:在Demo函数内部,创建一个QApplication对象,它是所有PyQt5应用程序的基础,用于处理命令行参数。
  • 创建QWidget和QLabel对象:创建一个QWidget对象作为基本窗口组件,以及一个QLabel对象作为显示文本的标签,并将其设置为QWidget的子组件。
  • 配置QLabel:设置QLabel的文本内容、字体和位置。
  • 配置QWidget窗口:设置QWidget窗口的大小、位置和标题。
  • 显示窗口:使QWidget窗口可见。
  • 启动事件循环:启动应用程序的事件循环,等待用户操作,直到应用程序退出。
  • 检查主程序运行:如果当前脚本作为主程序运行,则调用Demo函数。

(2)面向对象设计GUI:

import sys
# 从PyQt5.QtWidgets/QtGui/QtCore,导入所有的类,对象,函数等
# 建议只导入所需的特定类和函数
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

# 定义一个名为The_xzs的类,它继承自QWidget,是一个基本的窗口组件
class The_xzs(QWidget):
    # 定义The_xzs类的构造函数,它接受一个可选的parent参数,默认为None
    def __init__(self, parent=None):
        # 调用父类QWidget的构造函数,初始化The_xzs对象
        super(The_xzs, self).__init__(parent)
        # 设置窗口的大小为宽200像素、高50像素
        self.resize(500, 200)
        # 设置窗口的标题为"Demo"
        self.setWindowTitle("Demo")
        # 在The_xzs类中创建一个QLabel对象,并将其作为The_xzs的子组件
        self.label = QLabel(self)
        # 设置标签的文本内容为"Demo"
        self.label.setText("Demo")
        # 创建一个QFont对象,用于设置字体属性
        font = QFont()
        # 设置字体家族为"宋体"
        font.setFamily("宋体")
        # 设置字体大小为16点
        font.setPointSize(16)
        # 将设置好的字体应用到标签上
        self.label.setFont(font)
        # 将标签移动到窗口内部的坐标(250, 100)的位置
        self.label.move(250, 100)

# 常用的Python模式,检查当前脚本是否作为主程序运行
# 如果是,就调用main函数
# 创建和运行PyQt5应用程序
if __name__ == '__main__':
    # 创建一个QApplication对象,它是所有PyQt5应用程序的基础,sys.argv包含了命令行参数
    app = QApplication(sys.argv)
    # 创建The_xzs类的实例
    xs = The_xzs()
    # 显示窗口
    xs.show()
    # 启动应用程序的事件循环,app.exec_()会阻塞直到应用程序退出
    # sys.exit用来退出Python解释器,app.exec_()的返回值通常作为退出状态码传递给sys.exit
    sys.exit(app.exec_())

 实现步骤: 

  • 导入模块:导入sys模块以及从PyQt5的QtCoreQtGuiQtWidgets模块导入所有类、对象和函数。

  • 定义窗口类:定义一个名为The_xzs的类,继承自QWidget,用于创建窗口。

  • 初始化窗口组件:在The_xzs类的构造函数中初始化窗口,包括设置大小、标题,并创建一个QLabel子组件。

  • 配置标签样式:为QLabel设置文本、字体和位置。

  • 运行程序:检查当前脚本是否作为主程序运行,如果是,则创建QApplication对象并启动GUI程序。

  • 显示窗口:实例化The_xzs类并显示窗口。

  • 启动事件循环:通过app.exec_()启动事件循环,等待用户操作直到程序退出。

  • 退出程序:使用sys.exit退出程序,并将事件循环的返回值作为退出状态码。

三、PyQt5中的实用工具:

名字作用
pyqt5 designerQt设计师GUI布局工具
pyuic5Qt用户界面编译器,用于从ui文件生成代码
assistantQt助手文档工具
linguist Qt翻译工具
lrelease 将ts文件编译为qm文件
pylupdate5 提取翻译字符串并生成或更新ts文件
qmake Qt软件构建工具
pyqt5 qmlscene QML文件查看器
pyqmlviewer QML文件查看器
pyrcc5 Qt资源文件编译器
pyqmltestrunner 在QML代码上运行单元测试
qdbus 命令行工具,用于列出D-Bus服务
QDoc软件项目的文档生成器
Qhelpgenerator 生成和查看Qt帮助文件
qmlimportscanner 解析和报告QML导入情况

四、PyQt5中的类:

        PyQt API 提供了超过400个类,构成了一个强大的工具集,用于开发图形用户界面(GUI)。在这个层次结构中,QObject是所有Qt对象的基类,而QPaintDevice是所有可绘制对象的基类。QApplication类负责管理GUI应用程序的控制流程和主要设置,包括主事件循环和系统及应用程序范围的设置。QWidget 是所有用户界面对象的基类,继承自QObjectQPaintDevice,而QDialogQFrame等类则继承自QWidget,进一步扩展了Qt的GUI功能。

(1)PyQt5类的路径:

PyQt5的模块和类在安装后位于Python的site-packages目录下的一个名为PyQt5的文件夹内。

我的默认路径:

C:\Users\86173\AppData\Roaming\Python\Python38\site-packages\PyQt5

(2)PyQt5常用类的作用:

模块作用
QtCore模块

包含Qt的核心非GUI功能,如事件循环、定时器、线程、文件和文件夹操作、时间和日期等。这是PyQt5的基础模块。主要类包括QObject(所有PyQt对象的基类)、QFile、QDir、QThread、QTimer等。

QtGui模块

包含窗口系统、事件处理、2D图形、基本绘画、字体和文字类。

主要类有QPainter、QFont、QColor、QImage等。

QtWidgets模块

提供了一系列用户界面控件,如按钮、文本框、标签、表格、菜单、滚动条等。继承自QWidget的类,如QMainWindow、QDialog、QPushButton等。

QtMultimedia模块

用于处理多媒体和调用摄像头API的类。包含音频、视频、摄像头相关的类库。

QtBluetooth模块

包含查找和连接蓝牙的类。

功能包括扫描设备、连接、交互等行为。

QtNetwork模块

包含网络编程的类,能让TCP/IP和UDP开发变得更加方便和可靠。

提供便捷的TCP/IP及UDP的C/S代码集合。

QtPositioning模块

包含定位的类,可以使用卫星、WiFi甚至文本。

一般用在网络地图定位系统中。

Enginio模块用于构建客户端的应用程序库,在运行时访问Qt Cloud服务器托管的应用程序。
QtWebSockets模块包含了一组类程序,用于实现WebSocket协议。

(3)PyQt5小部件列表:

小部件说明
QLabel用于在用户界面中显示文本或图片。它是一个静态的显示控件,不提供用户交互功能。
QLineEdit提供一个文本输入框,允许用户输入单行文本。它常用于数据输入和搜索框。
QTextEdit允许用户编辑多行文本,适用于需要文本格式化或多行文本显示的场景。
QPushButton创建一个按钮,用户点击时可以触发一个操作或事件,常用于执行命令。
QRadioButton单选按钮,允许用户从一组选项中选择一个。单选按钮通常用于互斥选择。
QCheckBox复选框,允许用户选择或取消选择一个或多个选项。
QSpinBox提供增加和减少操作的输入框,用于输入整数值,常用于设置数值选项。
QScrollBar滚动条,允许用户通过滚动来访问超出显示范围的内容。
QSlider滑块,允许用户沿直线轨迹选择一个值,常用于调整设置或显示连续值。
QComboBox下拉列表框,提供一系列预定义选项供用户选择。
QMenuBar菜单栏,包含多个QMenu对象,用于组织应用程序的菜单项。
QStatusBar状态栏,通常位于窗口底部,用于显示状态信息和反馈。
QToolBar工具栏,包含一系列操作按钮和控件,通常位于窗口顶部或可以浮动。
QListView列表视图,以列表模式或图标模式显示可选择的项目。
QPixmap像素映射,用于在QLabelQPushButton对象上显示的屏幕外图像。
QDialog

对话框,可以是模态或非模态的,用于向用户提供信息或收集输入,并可向父窗口返回信息。

五、Qt Designer使用教程:

(1)Qt Designer位置路径:

Qt Designer在安装后位于Python的site-packages\qt5_applications\Qt\bin目录下。

我的默认路径:

C:\Users\86173\AppData\Roaming\Python\Python38\site-packages\qt5_applications\Qt\bin

        在PyQt 5.15.x及之前的版本中,Qt Designer的可执行文件designer.exe通常位于%Python_path%\Lib\site-packages\pyqt5_tools\Qt\bin\目录下;而在PyQt 5.15.x及之后的版本中,该文件路径变更为%Python_path%\Lib\site-packages\qt5_applications\Qt\bin\designer.exe。可以在相应的路径下找到并双击designer.exe来启动Qt Designer。 

双击即可打开Qt Designer应用程序:

(2)Qt Designer界面介绍:

(3)控件工具箱介绍:

Layouts(布局)
Vertical Layout纵向布局
Horizontal Layout横向布局 
Grid Layout 栅格布局 
Form Layout在窗体布局中布局 
Spacers(间隔)
Horizontal Spacer水平间隔
Vertical Spacer垂直间隔
Buttons(按键)
Push Button普通按键
Tool Button工具按键
Radio Button 单选按钮
Check Box复选框
Command Link Button命令连接按钮
Dialog Button Box对话框按钮
ltem Views(Model-Based)项目视图(基于模型)
List View列表视图
Tree View

树状视图

Table View

表格视图

Column View列视图 /直栏浏览
Undo View

撤销视图更改

ltem Widgets (ltem-Based)项目小部件(基于项目)
List Widget

列表控件

Tree Widget

窗口部件树

Table Widget表部件
Containers(容器/本地编辑)
Group Box分组框
Scroll Area滚动区域
Tool Box工具箱
Tab Widget选项卡小部件
Stacked Widget 堆小部件
Frame框架
Widget

窗口小部件

MDI AreaMDI区域
小部件

停靠小部件

 Input Widgets(输入组件)
Combo Box

组合框

Font Combo Box   字体下拉框
Line Edit行编辑器
Text Edit

文本编辑器

Plain Text Edit纯文本编辑
Spin Box

数字设定框

Double Spin Box双精度数字调节框
Time Edit时间编辑框
Data Edit 数据编辑框
Dial转盘
Horizontal Scroll Bar水平滚动条
Vertical Scroll Bar垂直滚动条
Horizontal Slider水平滑块
Vertical Slider垂直滑块
Key Sequence Edit编辑按键序列
Date/Time Edit日期/时间编辑
Display Widgets(显示小部件)
Label标签
Text Browser文本浏览器
Graphics Widget 图形窗口小部件
LCD Numbe数字显示控件
Progress Bar进度条
Horizontal Line 水平线
Vertical Line垂直线
OpenGL WidgetOpenGL窗口小部件
Graphics View

图形视图

(4)对象查看器介绍:

        对象查看器在Qt Designer中的主要作用是查看和管理当前用户界面中包含的所有控件以及它们所属的类。通过对象查看器,可以直观地了解控件的层级关系和属性,便于进行界面布局的调整和控件属性的修改。对象查看器提供了一个树状结构视图,展示从顶层窗口到子控件的完整结构,使得在开发时能够快速定位和选择特定的控件,并对它们进行编辑操作。

(5)属性编辑器介绍:

        属性编辑器是Qt Designer中的一个工具,它允许开发者直观地查看和修改用户界面控件的属性,包括控件的名称、大小、位置、字体、背景等等,以及为控件添加自定义属性和配置,从而提供了一个便捷的接口来调整和优化界面元素的显示和行为。

(6)资源编辑器介绍:

        资源编辑器,允许开发者在设计用户界面时定义和使用Qt资源系统。资源编辑器使得每个表单都可以有一个单独的资源文件(.qrc),在其中可以添加和管理图像、图标、样式表等资源。这样,开发者可以在设计时就指定资源,并且在运行时动态加载这些资源,从而简化了资源管理,并使得应用程序的部署更加方便。

(7)信号/槽编辑器介绍:

        信号/槽编辑器可以可视化地管理和建立用户界面控件之间的信号与槽连接。允许通过图形界面直接将控件的信号(如按钮点击)与相应的槽函数(响应动作)关联起来,从而实现控件间的交互逻辑,而无需手动编写连接代码。这样,可以更加直观和便捷地处理事件驱动的编程任务。

 

(8)动作编辑器介绍:

        动作编辑器可以用于管理和配置应用程序中的动作,如菜单项、工具栏按钮和上下文菜单。通过动作编辑器,可以添加新动作、设置动作的属性(如图标、文本和快捷键),以及编辑动作的触发事件和关联的槽函数。

六、创建Qt Designer程序:

第一步:创建主窗口

打开Qt Designer应用程序创建主窗口:

第二步:添加小部件

从左窗格的小部件框中拖放所需的小部件:

第三步:调整小部件

属性编辑器调整小部件的设置:

第四步:保存.ui文件

选定保存路径及文件名称。

 第五步:.ui转化为.py文件

使用pyuic5命令行实用程序,将这个设计转化为Python等效代码。

pyuic5 -x counter.ui -o counter.py

转化后的.py文件

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'counter.ui'
#
# Created by: PyQt5 UI code generator 5.15.11
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        font = QtGui.QFont()
        font.setFamily("宋体")
        MainWindow.setFont(font)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.push_add1 = QtWidgets.QPushButton(self.centralwidget)
        self.push_add1.setGeometry(QtCore.QRect(180, 400, 93, 28))
        self.push_add1.setObjectName("push_add1")
        self.push_subtract1 = QtWidgets.QPushButton(self.centralwidget)
        self.push_subtract1.setGeometry(QtCore.QRect(540, 400, 93, 28))
        self.push_subtract1.setObjectName("push_subtract1")
        self.label_text = QtWidgets.QLabel(self.centralwidget)
        self.label_text.setGeometry(QtCore.QRect(300, 160, 200, 70))
        font = QtGui.QFont()
        font.setFamily("宋体")
        font.setPointSize(36)
        self.label_text.setFont(font)
        self.label_text.setAlignment(QtCore.Qt.AlignCenter)
        self.label_text.setObjectName("label_text")
        self.push_reset = QtWidgets.QPushButton(self.centralwidget)
        self.push_reset.setGeometry(QtCore.QRect(360, 400, 93, 28))
        self.push_reset.setObjectName("push_reset")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.push_add1.setText(_translate("MainWindow", "+1"))
        self.push_subtract1.setText(_translate("MainWindow", "-1"))
        self.label_text.setText(_translate("MainWindow", "0"))
        self.push_reset.setText(_translate("MainWindow", "清零"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

第六步:创建项目

 将.ui文件和生成的.py同创建项目放一起。

第七步:编写程序 

import sys
# 从PyQt5.QtWidgets/QtGui/QtCore,导入所有的类,对象,函数等
# 建议只导入所需的特定类和函数
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
# 导入自定义的UI界面类,该类由Qt Designer生成
from counter import Ui_MainWindow

# 定义一个名为The_xzs的类,它继承自QWidget,是一个基本的窗口组件
class The_xzs(QMainWindow, Ui_MainWindow):
    # 定义The_xzs类的构造函数,它接受一个可选的parent参数,默认为None
    def __init__(self, parent=None):
        # 调用父类QWidget的构造函数,初始化window对象
        super(The_xzs, self).__init__(parent)
        self.setupUi(self)  # 使用自定义UI界面类设置界面

        # 连接按钮的点击信号到对应的槽函数,实现交互逻辑
        self.push_add1.clicked.connect(self.counter_add1)                
        self.push_subtract1.clicked.connect(self.counter_subtract1)              
        self.push_reset.clicked.connect(self.counter_reset)             
        
        # 初始化计数器数值,并更新标签显示
        self.counter = 0
        self.label_text.setText(str(self.counter))
        
    # 计数器加一的功能实现
    def counter_add1(self):
        self.counter += 1
        self.label_text.setText(str(self.counter))

    # 计数器减一的功能实现
    def counter_subtract1(self):
        self.counter -= 1
        self.label_text.setText(str(self.counter))
  
    # 计数器清零的功能实现
    def counter_reset(self):
        self.counter = 0
        self.label_text.setText(str(self.counter))

# 常用的Python模式,检查当前脚本是否作为主程序运行
# 如果是,就调用main函数
# 创建和运行PyQt5应用程序
if __name__ == '__main__':
    # 创建一个QApplication对象,它是所有PyQt5应用程序的基础,sys.argv包含了命令行参数
    app = QApplication(sys.argv)
    # 创建The_xzs类的实例
    xs = The_xzs()
    # 显示窗口
    xs.show()
    # 启动应用程序的事件循环,app.exec_()会阻塞直到应用程序退出
    # sys.exit用来退出Python解释器,app.exec_()的返回值通常作为退出状态码传递给sys.exit
    sys.exit(app.exec_())

 成果演示:

Qt界面计数器

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

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

相关文章

SPT: Revisiting the Power of Prompt for Visual Tuning

方法简介 方法很简单,作者通过实验发现prompt拥有一个良好的初始化是VPT的关键,于是作者就通过在MAE/MoCo进行预训练来得到一个良好的prompt的初始化来提供微调阶段的prompt。 这么简单的方法是怎么催成一篇顶会的呢?值得我们去学习&#xf…

基于事件驱动的websocket简单实现

websocket的实现 什么是websocket? WebSocket 是一种网络通信协议,旨在为客户端和服务器之间提供全双工、实时的通信通道。它是在 HTML5 规范中引入的,可以让浏览器与服务器进行持久化连接,以便实现低延迟的数据交换。 WebSock…

基于协同过滤算法的宠物用品商城的设计与实现(计算机毕业设计)Java Spring 衍生为任何商城系统 毕业论文

系统合集跳转 源码获取链接 一、系统环境 运行环境: 最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat环境: Tomcat 7.x,8.x,9.x版本均可 操作系统…

文本预处理介绍

文本预处理 文本预处理1.认识文本预处理2.文本处理的基本方法2.1.什么是分词2.2 什么是命名实体化2.3词性标注 3.文本张量的表示方法3.1文本张量表示3.2 one-hot词向量表示 4.Word2vec模型4.1模型介绍4.2word2vec的训练和使用 5.词嵌入word embedding 介绍6.文本数据分析1.文本…

力扣3381.长度可被K整除的子数组的最大元素和

力扣3381.长度可被K整除的子数组的最大元素和 题目 题目解析及思路 题目要求返回一段长度为K的倍数的最大子数组和 同余前缀和 代码 class Solution { public:long long maxSubarraySum(vector<int>& nums, int k) {int n nums.size();vector<long long>…

第三节、电机定速转动【51单片机-TB6600驱动器-步进电机教程】

摘要&#xff1a;本节介绍用定时器定时的方式&#xff0c;精准控制脉冲时间&#xff0c;从而控制步进电机速度 一、计算过程 1.1 电机每一步的角速度等于走这一步所花费的时间&#xff0c;走一步角度等于步距角&#xff0c;走一步的时间等于一个脉冲的时间 w s t e p t … ……

【数学建模】线性规划问题及Matlab求解

问题一 题目&#xff1a; 求解下列线性规划问题 解答&#xff1a; 先将题目中求最大值转化为求最小值&#xff0c;则有 我们就可以得到系数列向量: 我们对问题中所给出的不等式约束进行标准化则得到了 就有不等式约束条件下的变系数矩阵和常系数矩阵分别为&#xff1a; 等式…

云计算对定制软件开发的影响

在当代数字世界中&#xff0c;云计算是改变许多行业&#xff08;包括定制软件开发&#xff09;的最伟大的革命性趋势之一。由于这些公司努力寻求更好、更多不同的方式来履行职责&#xff0c;因此云计算与传统的内部部署基础设施相比具有许多不可否认的优势。这种范式转变对定制…

3D 生成重建020-Gaussian Grouping在场景中分割并编辑一切

3D 生成重建020-Gaussian Grouping在场景中分割并编辑一切 文章目录 0 论文工作1 方法2 实验结果 0 论文工作 最近提出的高斯Splatting方法实现了高质量的实时三维场景新视角合成。然而&#xff0c;它仅仅关注外观和几何建模&#xff0c;缺乏细粒度的物体级场景理解。为了解决…

GUI的最终选择:Tkinter

Tkinter是Python默认的GUI库&#xff0c;因此使用时直接导入即可&#xff1a;import tkinter 17.1 Tkinter之初体验 代码分析&#xff1a; tkinter.mainloop()通常是程序的最后一行代码&#xff0c;执行后程序进入主事件循环。 17.2 进阶版本 将代码封装成类&#xff1a; 运…

电子商务人工智能指南 3/6 - 聊天机器人和客户服务

介绍 81% 的零售业高管表示&#xff0c; AI 至少在其组织中发挥了中等至完全的作用。然而&#xff0c;78% 的受访零售业高管表示&#xff0c;很难跟上不断发展的 AI 格局。 近年来&#xff0c;电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…

嵌入式软件C语言面试常见问题及答案解析(一)

本文中题目列表 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)2. 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。3. 预处理器标识#error的目的是什么?4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?5. …

从失败中学习:如何将错误转化为学习机会

失败是人生的一部分&#xff0c;无论是在个人生活还是职业生涯中&#xff0c;我们都难免会遇到挫折和错误。然而&#xff0c;失败并不意味着终结&#xff0c;而是一个潜在的学习机会。通过正确的态度和方法&#xff0c;我们可以从失败中汲取经验&#xff0c;转化为成长的动力。…

HarmonyOS NEXT的Navigation,跳转子页面后底部Tab不隐藏问题解决

问题复现 一直以来&#xff0c;首页的Tabs是这么用的&#xff1a; import Home from "../pages/home/Home" import ZhiHu from "../pages/song/Song" import Mine from "../pages/mine/Mine"Entry Component struct Index {State currentIndex…

基础排序算法详解:冒泡排序、选择排序与插入排序

引言 上一章&#xff0c;我们聊到了排序的基本概念和常见算法的分类。这一次&#xff0c;我们从基础开始&#xff0c;深入剖析三种常见的O(n) 排序算法&#xff1a;冒泡排序、选择排序 和 插入排序。 它们是学习排序算法的入门神器&#xff0c;不仅实现简单&#xff0c;还能帮…

番茄钟与Todo List:用Go构建高效的时间管理工具

引言 在当今快节奏的世界中&#xff0c;时间管理和任务组织变得越来越重要。为了帮助用户提高效率&#xff0c;我开发了一个基于Golang的开源项目&#xff0c;基于fyne的ui&#xff0c;它结合了经典的番茄工作法&#xff08;Pomodoro Technique&#xff09;和功能丰富的待办事…

Python-标识符、隐式转换和显式转换

记录python学习&#xff0c;直到学会基本的爬虫&#xff0c;使用python搭建接口自动化测试就算学会了&#xff0c;在进阶webui自动化&#xff0c;app自动化 python基础1 标识符约定动态语言和静态语言隐式转换和显式转换隐式转换显式转换 实践是检验真理的唯一标准 标识符约定…

【全网最新】使用 1panel面板 部署若依系统( springboot 和 vue)项目

​​​​​​使用 1panel面板 部署 springboot 和 vue_1panel部署vue项目-CSDN博客 准备工作: 准备好的网站后台代码文件准备好的网站前端页面安装好1panel1panel中安装好mysql1panel中安装好redis1panel中安装好Openresty部署后台接口 在application.yml中修改后台端口,这里…

力扣Hot100刷题日常(链表篇上)

相交链表 题目分析&#xff1a; 暴力解法&#xff1a; 计算链表的长度&#xff1a; 首先我们需要知道链表 A 和链表 B 的长度。因为在开始比较两个链表是否相交之前&#xff0c;我们需要确保它们有相同的起始点。从长度上来说&#xff0c;两个链表的交点一定会出现在它们后续部…

MySQL数据库安全与管理

1、创建两个新用户U_student1和U_student2,密码分别为1234和5678 create user U_student1@localhost identified by 1234, U_student2@localhost identified by 5678; 2、创建两个新用户的详细信息保存在MySQL数据库的user表中 use mysql; select user, host, authentication…