详细学习Pyqt5中的6种按钮
Pyqt5相关文章:
快速掌握Pyqt5的三种主窗口
快速掌握Pyqt5的2种弹簧
快速掌握Pyqt5的5种布局
快速弄懂Pyqt5的5种项目视图(Item View)
快速弄懂Pyqt5的4种项目部件(Item Widget)
快速掌握Pyqt5的6种按钮
快速掌握Pyqt5的10种容器(Containers)
快速掌握Pyqt5的20种输入控件(Input Widgets)
快速掌握Pyqt5的9种显示控件
详细学习Pyqt5中的5种布局方式
详细学习Pyqt5中的6种按钮
详细学习Pyqt5中的2种弹簧
详细学习Pyqt5的5种项目视图(Item View)
详细学习Pyqt5的4种项目部件(Item Widget)
详细学习PyQt5与数据库交互
详细学习Pyqt5的20种输入控件(Input Widgets)
详细学习PyQt5中的多线程
待续。。。
在用户界面设计中,按钮扮演着极为重要的角色。作为界面与用户互动的主要媒介之一,按钮不仅是命令和功能的触发点,还是引导用户流程和提升用户体验的关键元素。合理设计的按钮不仅使用户界面更加直观易用,还能显著提升软件的整体可用性和效率。
PyQt5,作为一个强大的Python GUI库,提供了多种类型的按钮,以适应不同的使用场景和需求。在PyQt5中,常见的按钮类型包括:
- QPushButton:最常见的按钮类型,用于执行命令或触发事件。
- QRadioButton:允许用户在多个选项中选择一个。
- QCheckBox:提供可以选中或取消选中的选项,适合于多选场景。
- QToolButton:通常用于工具栏,提供快速访问特定命令的功能。
- QToggleButton:具有两种状态(开/关)的按钮,可以显示当前状态。
在接下来的内容中,我们将详细讨论这些不同类型的PyQt5按钮,探索它们的特性、用途以及如何在实际的应用程序中有效地使用它们。
1. QPushButton基础
基本用法和特性:
QPushButton
是PyQt5中最基础且广泛使用的按钮类型。它用于执行特定的命令或触发特定的事件。这种按钮支持文本、图像以及不同的样式,可以高度定制以适应不同的应用需求。QPushButton
可以显示普通文本、HTML标记的文本或图标,还可以配置为显示一个菜单。
QPushButton
的一个关键特性是它的信号与槽机制,这允许程序员定义按钮点击时执行的操作。通过连接按钮的点击(clicked)信号到适当的槽函数,可以实现当用户点击按钮时执行特定代码的功能。
创建标准按钮和响应点击事件:
要创建一个基本的QPushButton
并响应点击事件,可以遵循以下步骤:
- 创建按钮实例:实例化一个
QPushButton
,可以在构造函数中指定按钮的文本。 - 设置按钮属性:可选地设置按钮的各种属性,如尺寸、图标等。
- 连接信号与槽:使用
clicked
信号连接到一个槽函数,以定义点击按钮时的行为。 - 添加到布局:将按钮添加到布局中,以便在窗口中显示。
代码示例:
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayoutdef on_button_clicked():print("Button clicked!")app = QApplication([])
window = QWidget()# 创建QPushButton实例
button = QPushButton('Click Me')# 连接按钮点击信号到槽函数
button.clicked.connect(on_button_clicked)# 创建布局并添加按钮
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)window.show()
app.exec_()
在这个示例中,创建了一个文本为“Click Me”的按钮,并将其点击事件与名为on_button_clicked
的槽函数连接起来。当按钮被点击时,控制台会打印出“Button clicked!”的消息。通过这种方式,QPushButton
可以用来触发各种不同的动作,使得用户界面更加互动和直观。
2. QRadioButton的使用
工作原理和用途:
QRadioButton
在 PyQt5 中用于表示一组互斥的选项,即在多个选项中只能选择一个。这种类型的按钮通常用于设置选择、配置选项或任何需要用户在多个选项中做出单一选择的场景。
当一组QRadioButton
放置在同一个父容器中时,它们自动成为一组互斥的按钮。一旦某个按钮被选中,同组内的其他按钮将自动取消选中。这种行为是通过内部的按钮组管理实现的,而无需额外的代码来控制这种互斥行为。
使用单选按钮表示互斥选项:
要在用户界面中使用QRadioButton
来表示互斥的选项,可以按照以下步骤操作:
- 创建单选按钮:为每个选项创建一个
QRadioButton
实例。 - 添加到布局:将所有单选按钮添加到相同的布局中,这样它们就会自动形成一个互斥组。
- 连接信号与槽(可选):如果需要响应单选按钮的变化,可以将它们的
clicked
或toggled
信号连接到槽函数。
代码示例:
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QVBoxLayoutdef on_radio_button_toggled():radio_button = window.sender()if radio_button.isChecked():print(f"{radio_button.text()} is selected")app = QApplication([])
window = QWidget()# 创建单选按钮
radio_button1 = QRadioButton("Option 1")
radio_button2 = QRadioButton("Option 2")
radio_button3 = QRadioButton("Option 3")# 连接信号到槽函数
radio_button1.toggled.connect(on_radio_button_toggled)
radio_button2.toggled.connect(on_radio_button_toggled)
radio_button3.toggled.connect(on_radio_button_toggled)# 创建布局并添加单选按钮
layout = QVBoxLayout()
layout.addWidget(radio_button1)
layout.addWidget(radio_button2)
layout.addWidget(radio_button3)
window.setLayout(layout)window.show()
app.exec_()
在这个示例中,创建了三个单选按钮,并将它们的toggled
信号连接到了同一个槽函数on_radio_button_toggled
。当用户选择任一选项时,会在控制台打印出选中的选项。这个简单的示例演示了如何在PyQt5中使用QRadioButton
来创建一组互斥的选择。
3. QCheckBox的灵活性
特点及用法:
QCheckBox
在 PyQt5 中是一个用于表示开/关状态的控件,它提供了一个可以勾选或取消勾选的框。与 QRadioButton
不同,QCheckBox
允许多选,适用于用户需要从多个选项中选择一个或多个选项的场景。它广泛用于设置偏好、开启或关闭功能选项等场合。
QCheckBox
的一个关键特性是它能够表示三种状态:未选中(Unchecked)、部分选中(Partially checked,用于表示不确定状态)和选中(Checked)。这增加了它的灵活性,使得它能够应对更加复杂的用户界面需求。
捕获和处理状态更改:
要捕获和处理 QCheckBox
的状态更改,通常的做法是连接它的 stateChanged
信号到一个槽函数。这允许在复选框的状态发生变化时执行特定的操作,例如更新应用设置或显示其他控件。
代码示例:
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox, QVBoxLayoutdef checkbox_changed(state):if state == QCheckBox.Checked:print("Checkbox is checked")elif state == QCheckBox.Unchecked:print("Checkbox is unchecked")else:print("Checkbox is partially checked")app = QApplication([])
window = QWidget()# 创建QCheckBox实例
checkbox = QCheckBox("Check me")
checkbox.setTristate(True) # 开启三态模式# 连接信号到槽函数
checkbox.stateChanged.connect(checkbox_changed)# 创建布局并添加复选框
layout = QVBoxLayout()
layout.addWidget(checkbox)
window.setLayout(layout)window.show()
app.exec_()
在这个示例中,我们创建了一个 QCheckBox
,并将其 stateChanged
信号连接到了 checkbox_changed
函数。这个函数根据复选框的状态打印不同的消息。启用了三态模式的复选框(setTristate(True)
)允许未选中、部分选中和完全选中三种状态,使得它可以用于更复杂的用户交互场景。通过这种方式,QCheckBox
提供了一种简单而强大的方式来收集用户输入和调整应用程序的行为。
4. QToolButton的高级应用
高级特性介绍:
QToolButton
是 PyQt5 中的一个高级控件,通常用于工具栏中,提供了比普通按钮更丰富的功能。它可以显示一个图标、一个文本或二者结合,还支持各种样式和行为,例如弹出菜单或多种动作模式。QToolButton
特别适用于需要紧凑布局和快速访问特定功能的应用,如绘图程序、文本编辑器或任何工具栏重要的应用程序。
在工具栏中使用 QToolButton:
QToolButton
在工具栏中的使用是其最常见的场景。它可以被配置为显示图标,使得工具栏更加直观和易用。此外,QToolButton
还支持不同的动作模式,例如单击即触发一个操作,或者显示一个关联的下拉菜单以提供更多选项。
添加下拉菜单和动作:
QToolButton
可以配置一个下拉菜单,当用户点击按钮时,菜单会显示出来。菜单中的每一项都可以关联一个特定的动作(QAction
),这些动作可以是触发特定功能的命令。
代码示例:
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QToolButton, QMenu, QActionapp = QApplication([])
window = QWidget()# 创建 QToolButton 实例
tool_button = QToolButton()
tool_button.setText("Options")# 创建动作
action1 = QAction("Action 1")
action2 = QAction("Action 2")# 创建菜单并添加动作
menu = QMenu()
menu.addAction(action1)
menu.addAction(action2)
tool_button.setMenu(menu)
tool_button.setPopupMode(QToolButton.InstantPopup)# 创建布局并添加工具按钮
layout = QVBoxLayout()
layout.addWidget(tool_button)
window.setLayout(layout)window.show()
app.exec_()
在这个示例中,创建了一个 QToolButton
和一个包含两个动作的下拉菜单。按钮被设置为 InstantPopup
模式,这意味着当用户点击按钮时,菜单会立即显示。每个动作都可以连接到相应的槽函数以执行实际的命令。
通过这种方式,QToolButton
不仅为用户提供了快速访问常用功能的便利,还大大增强了工具栏的功能性和灵活性。
5. 带图标的QPushButton
添加和定制图标:
在 QPushButton
中添加图标是一种常见的做法,用于提供更直观的视觉提示,增强用户体验。PyQt5 允许轻松地在按钮中添加图标,并提供了多种方式来定制这些图标,包括调整大小、改变样式和设置图标与文本的相对位置。
影响按钮视觉效果和用户体验:
- 图标大小: 图标的大小应该与按钮的大小和整体界面风格相协调。太大或太小的图标可能会破坏布局的整体美观,或影响用户的识别和交互。
- 图标风格: 图标的风格(如颜色、形状、细节程度)应与应用的整体设计语言一致。不一致的图标风格可能会导致用户界面看起来不协调。
- 图标与文本的关系: 当按钮同时包含图标和文本时,正确的布局和间距非常重要。图标和文本应该清晰地呈现,以确保用户可以快速理解按钮的功能。
代码示例:
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import QSizeapp = QApplication([])
window = QWidget()# 创建带图标的 QPushButton
button = QPushButton("Click Me")
button.setIcon(QIcon("path/to/icon.png")) # 替换为图标的路径
button.setIconSize(QSize(24, 24)) # 设置图标大小# 创建布局并添加按钮
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)window.show()
app.exec_()
在这个示例中,我们创建了一个带有图标的 QPushButton
。首先,使用 setIcon
方法设置按钮的图标,然后使用 setIconSize
方法来定义图标的大小。图标文件路径应该替换为实际图标的路径。这种带图标的按钮更容易被用户识别,特别是在功能丰富的应用程序中,可以帮助用户更快地找到所需的功能。
通过合理地设计和使用图标,开发者可以创建出既美观又功能性的按钮,从而提升整个应用程序的用户体验。
6. 使用样式定制QPushButton
使用样式表定制外观:
在 PyQt5 中,可以通过样式表(StyleSheet)来定制 QPushButton
的外观,这类似于在网页开发中使用 CSS。样式表提供了一种强大的方式来改变按钮的颜色、边框、字体、背景等多种属性,允许开发者创建具有特定风格和品牌标识的自定义按钮。
改变按钮属性:
- 颜色和背景: 可以设置按钮的背景颜色、文本颜色和边框颜色。
- 边框样式: 边框的宽度、样式(如实线、虚线)和圆角可以被自定义。
- 字体和文本属性: 字体大小、样式和文本对齐方式都可以通过样式表进行调整。
- 伪状态样式: 可以为按钮的不同状态(如悬停、按下、禁用)设置不同的样式。
代码示例:
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayoutapp = QApplication([])
window = QWidget()# 创建 QPushButton 并设置样式
button = QPushButton("Styled Button")
button.setStyleSheet("""QPushButton {color: white;background-color: blue;border-style: outset;border-width: 2px;border-radius: 10px;border-color: beige;font: bold 14px;padding: 6px;}QPushButton:hover {background-color: navy;}QPushButton:pressed {background-color: lightblue;border-style: inset;}
""")# 创建布局并添加按钮
layout = QVBoxLayout()
layout.addWidget(button)
window.setLayout(layout)window.show()
app.exec_()
在这个示例中,我们为 QPushButton
设置了一个详细的样式表,包括修改了其颜色、边框、字体和内边距。还定义了悬停(:hover
)和按下(:pressed
)状态的特殊样式,以提供更好的用户交互反馈。
通过使用样式表,开发者可以精细地控制 QPushButton
的外观和感觉,从而创建出与应用程序的整体设计和品牌一致的界面元素。这种方法不仅提升了按钮的视觉吸引力,还增强了用户的交互体验。
7. 实际案例分析
在实际的应用程序中,不同类型的按钮扮演着各自独特的角色,根据它们的功能和设计影响用户体验和界面布局。以下是一些具体的实际应用案例,展示了如何在界面设计中有效地使用各种按钮。
-
电子邮件客户端(使用 QPushButton):
- 案例描述: 在电子邮件客户端中,
QPushButton
被用来执行发送、回复和转发等操作。 - 用户体验和设计作用: 这些按钮通常配有明确的标签和图标,清楚地指示它们的功能,从而提高了界面的直观性和易用性。
- 案例描述: 在电子邮件客户端中,
-
在线调查表(使用 QRadioButton 和 QCheckBox):
- 案例描述: 在线调查或问卷中使用
QRadioButton
来收集单选答案,而QCheckBox
用于多选问题。 - 用户体验和设计作用: 单选按钮提供了清晰的选择限制,而复选框允许灵活的多选,这样的设计使得调查表既清晰又易于操作。
- 案例描述: 在线调查或问卷中使用
-
图形编辑工具(使用 QToolButton):
- 案例描述: 在图形编辑器的工具栏中,
QToolButton
用于快速访问画笔、橡皮擦等工具。 - 用户体验和设计作用: 这些工具按钮通常具有图标显示,提供了一种直观且节省空间的方式来访问常用工具,增强了工作效率。
- 案例描述: 在图形编辑器的工具栏中,
-
设置界面(使用具有不同样式的 QPushButton):
- 案例描述: 在设置或配置界面中,使用具有不同颜色和样式的
QPushButton
来区分不同级别的操作,如“保存”、“取消”、“恢复默认”等。 - 用户体验和设计作用: 不同样式的按钮可以帮助用户识别每个按钮的重要性和功能,提高决策的准确性。
- 案例描述: 在设置或配置界面中,使用具有不同颜色和样式的
通过这些实例,可以看出不同类型的按钮在实际应用中如何根据它们的功能特点被有效地利用。正确地使用各种按钮不仅能够提升应用程序的整体外观,还能显著改善用户的互动体验。
8. 最佳实践和常见错误
在使用 PyQt5 创建按钮时,遵循一些最佳实践可以提高界面的用户体验和应用的整体质量。同时,了解并避免一些常见的错误也是非常重要的。
最佳实践:
- 明确的标签: 按钮应有清晰、明确的标签,确保用户能够轻松理解按钮的功能。
- 一致的风格: 按钮的风格应与应用程序的整体设计保持一致,包括颜色、字体和大小。
- 适当的大小和位置: 按钮的大小应足够大,以便于点击,同时其位置应符合用户界面的布局逻辑。
- 适度的反馈: 当用户与按钮交互时(如点击或悬停),应提供适当的视觉反馈。
- 禁用状态: 如果某个操作当前不可用,相应的按钮应该被禁用,以向用户清楚地表明这一点。
- 避免过多按钮: 界面上的按钮数量应保持适度,避免过多按钮导致的混乱。
常见错误及避免方法:
- 过度装饰: 避免给按钮添加过多的装饰元素,这可能会分散用户的注意力或使界面显得杂乱。
- 不一致的样式: 所有按钮应具有一致的风格和行为,不一致可能会导致用户混淆。
- 忽略可访问性: 按钮的设计应考虑到易访问性,比如对色盲用户友好的颜色对比。
- 复杂的交互逻辑: 避免在按钮的交互逻辑中引入不必要的复杂性,这可能会降低用户体验。
- 忽视按钮状态: 按钮的不同状态(如激活、禁用、悬停)应有清晰的视觉区分。
遵循这些最佳实践并避免常见的设计错误,可以帮助创建出既美观又功能强大的按钮,从而提升整个 PyQt5 应用的用户体验和专业度。
9. 结论
在 PyQt5 应用程序的设计中,按钮无疑是最基本但同时也是最重要的界面元素之一。从最常用的 QPushButton
到更具特定功能的 QRadioButton
、QCheckBox
和 QToolButton
,每种类型的按钮都有其独特的用途和作用。它们不仅是用户与应用程序交互的主要手段,也是传达应用功能和引导用户操作的关键组件。
正确地使用和定制这些按钮,能够显著提升用户体验和应用的整体感观。清晰的标签、一致的样式、适当的大小和位置、以及良好的反馈机制,都是创造出专业和用户友好界面的重要因素。同时,避免常见的设计错误,如过度装饰、不一致的样式和忽略可访问性,同样至关重要。
深入理解 PyQt5 中不同类型按钮的特性和用法,对于任何希望建立高质量、专业级用户界面的开发者来说,都是一项重要的技能。通过精心设计的按钮,开发者可以为用户提供一种既直观又愉悦的使用体验,从而使得应用程序在众多竞争者中脱颖而出。
相关文章:

详细学习Pyqt5中的6种按钮
Pyqt5相关文章: 快速掌握Pyqt5的三种主窗口 快速掌握Pyqt5的2种弹簧 快速掌握Pyqt5的5种布局 快速弄懂Pyqt5的5种项目视图(Item View) 快速弄懂Pyqt5的4种项目部件(Item Widget) 快速掌握Pyqt5的6种按钮 快速掌握Pyqt5的10种容器&…...

【工具】Zotero|使用Zotero向Word中插入引用文献(2023年)
版本:Word 2021,Zotero 6.0.30 前言:两年前我找网上插入文献的方式,网上的博客提示让我去官网下个插件然后才能装,非常麻烦,导致我对Zotero都产生了阴影。最近误打误撞发现Zotero自带了Word插件,…...

利用Python爬虫爬取豆瓣电影排名信息
可以使用第三方库Beautiful Soup和Requests来编写一个简单的爬虫,从豆瓣电影Top100页面获取信息 import requests from bs4 import BeautifulSoupdef get_douban_top100():url https://movie.douban.com/top250headers {User-Agent: Mozilla/5.0 (Windows NT 10.…...

灯光开不了了,是不是NVIDIA的问题
如果你跟我一样灯光亮度调节不了了,然后显示适配器又没有了,你看一下是不是和我这个大怨种一样把NVIDIA卸了,为了这个东西,这屏幕亮瞎我的眼镜😢😢。只需要进入官网,你就可以直接找到࿰…...

线性可分SVM摘记
线性可分SVM摘记 0. 线性可分1. 训练样本到分类面的距离2. 函数间隔和几何间隔、(硬)间隔最大化3. 支持向量 \qquad 线性可分的支持向量机是一种二分类模型,支持向量机通过核技巧可以成为非线性分类器。本文主要分析了线性可分的支持向量机模型,主要取自…...

LabVIEW在调用image.cpp或drawmgr.cpp因为DAbort而崩溃
LabVIEW在调用image.cpp或drawmgr.cpp因为DAbort而崩溃 出现下列问题,如何解决? 1. LabVIEW 程序因image.cpp或drawmgr.cpp中的错误而崩溃 2. 正在通过cRIO-9034运行独立的LabVIEW应用程序,但它因drawmgr.cpp中的错误而崩溃 …...

nodejs微信小程序+python+PHP贵州旅游系统的设计与实现-计算机毕业设计推荐MySQL
目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…...

WebUI自动化学习(Selenium+Python+Pytest框架)003
1.元素操作 在成功定位到元素之后,我们需要对元素进行一些操作动作。常用的元素操作动作有: (1)send_keys() 键盘动作:向浏览器发送一个内容,通常用于输入框输入内容或向浏览器发送快捷键 (2…...

python+Appium自动化:python多线程多并发启动appium服务
Python启动Appium 服务 使用Dos命令或者bat批处理来手动启动appium服务,启动效率低下。如何将启动Appium服务也实现自动化呢? 这里需要使用subprocess模块,该模块可以创建新的进程,并且连接到进程的输入、输出、错误等管道信息&…...

【计算机网络笔记】802.11无线局域网
系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…...

用C++和python混合编写数据采集程序?
之前看过一篇文章,主要阐述的就是多种语言混合编写爬虫程序,结合各种语言自身优势写一个爬虫代码是否行得通?觉得挺有意思的,带着这样的问题,我尝试着利用我毕生所学写了一段C和python混合爬虫程序,目前运行…...

Android HCI日志分析案例1
案例1--蓝牙扫描设备过程分析 应用层发起搜索蓝牙设备,Android 官方提供的蓝牙扫描方式有三种,分别如下: BluetoothAdapter.startDiscovery(); //可以扫描经典蓝牙和BLE两种。BluetoothAdapter.startLeScan();//扫描低功耗蓝牙,…...

LangChain(0.0.339)官方文档四:Prompts下——prompt templates的存储、加载、组合和部分格式化
文章目录 一、 部分提示模板1.1 使用字符串值进行部分格式化(Partial with strings)1.2 使用函数进行部分格式化(Partial with functions) 二、Prompt pipelining2.1 String prompt pipelining2.2 Chat prompt pipelining 三、使用…...

鸿蒙开发笔记
最近比较火,本身也是做前端的,就抽空学习了下。对前端很友好 原视频地址:黑马b站鸿蒙OS视频 下载安装跟着视频或者文档就可以了。如果你电脑上安装的有node,但是开发工具显示你没安装,不用动咱们的node,直…...

「计算机网络」Cisco Packet Tracker计算机网络仿真器的使用
介绍 Cisco Packet Tracker:网络仿真工具,用于模拟网络配置。 (一) 配置交换机(Switch)(通过 带外管理) 带外:Out-of-Band, OOB写在前面:如何打开Console页…...

【已解决】if lock.acquire(block, timeout):KeyboardInterrupt
问题描述 Traceback (most recent call last): File "/media/visionx/monica/project/ResShift/app.py", line 134, in <module> demo.launch(shareFalse) File "/home/visionx/anaconda3/envs/ResShift/lib/python3.9/site-packages/gradio/bloc…...

将Excel中的数据导入shell脚本,并调用expect脚本
主脚本test.sh #!/bin/bash # 设置超时时间 set timeout 240 # 将 Excel 文件转换为 CSV 格式 # test.xlsx > temp.csv # 初始化一个二维数组 declare -A data # 逐行读取 CSV 文件,并将每个单元格的数据存储在二维数组中 row1 while IFS, read -r col1 col2 co…...

elementui el-table用span-method方法对相同的列名或行名进行合并
看到的一篇文章 同理 如果对第二列进行合并的话copy一下第一个方法,让值赋给第二个数组就可以 // 合并方法mergeCells({ row, column , rowIndex, columnIndex }) {debugger;if (columnIndex 1) {const _row this.spanArr[rowIndex];const _col _row > 0 ? …...

汇编语言实现音乐播放器
目标程序 用汇编语言实现一个音乐播放器,并支持点歌 Overview 乐曲是按照一定的高低、长短和强弱关系组成的音调,在一首乐曲中,每个音符的音高和音长与频率和节拍有关,因此我们要分别为3首要演奏的乐曲定义一个频率表和一个节拍…...

大型网站系统架构演化(Web)
大型网站系统架构演化 大型网站系统架构演化需要关注的维度涉及的技术演进过程单体架构垂直架构使用缓存改善网站性能缓存与数据库的数据一致性问题缓存技术对比Redis分布式存储方案Redis集群切片的常见方式Redis数据类型Redis 淘汰算法使用服务集群改善网站并发能力 大型网站系…...

三轴加速度计LIS2DW12开发(2)----基于中断信号获取加速度数据
三轴加速度计LIS2DW12开发.2--轮基于中断信号获取加速度数据 概述视频教学样品申请生成STM32CUBEMX串口配置IIC配置CS和SA0设置INT1设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置开启INT1中断设置传感器的量程配置过滤器链配置电源模式设置输出数据速率中断判断加速…...

Shell循环:whileuntil
一、特点:循环次数[一定]是固定的 二、while语句结构 while 条件测试 do 循环体 done 当条件测试成立(条件测试为真),执行循环体 演示: 需求:每秒显示一个数字,一…...

Redis 安装部署
文章目录 1、前言2、安装部署2.1、单机模式2.1.1、通过 yum 安装(不推荐,版本老旧)2.1.1、通过源码编译安装(推荐) 2.2、主从模式2.3、哨兵模式2.4、集群模式2.5、其他命令2.6、其他操作系统 3、使用3.1、Java 代码 —…...

项目中遇到的半导体公司
作为一个技术人,我并不是亲美,从技术的实事求是角度讲,不得不感叹欧美的半导体技术。他们的datasheet能学到的东西太多太多;我甚至佩服他们缜密的逻辑。从他们的文章中领悟我们技术到底有多low,没办法一个一个了解所有…...

汇编:call与ret/retf指令
一、call指令 1.1 依据位移进行转移:call 标号 1.2 实现段间转移:call far ptr 标号 1.3 转移地址在寄存器中:call 16位寄存器 1.4 转移地址在内存中 1.4.1 call word ptr 内存单元地址 1.4.2 call dword ptr 内存单元地址…...

Fiddler抓包工具之高级工具栏中的重定向AutoResponder的用法
重定向AutoResponder的用法 关于Fiddler的AutoResponder重定向功能,主要是时进行会话的拦截,然后替换原始资源的功能。 它与手动修该reponse是一样的,只是更加方便了,可以创建相应的rules,适合批处理的重定向功能。 …...

如何基于OpenCV和Sklearn库开展数据降维
大家在做数据分析或者机器学习应用过程中,不可避免的需要对数据进行降维操作,好多垂直行业业务中经常出现数据量少但维度巨大的情况。数据降维的目的是为了剔除不相关或冗余特征,使得数据易用,去除无用数据,实现数据可…...

详解SpringAop开发过程中的坑
😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…...

【海思SS528 | VDEC】MPP媒体处理软件V5.0 | VDEC的使用总结
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...

Kubernetes sample-controller 例子介绍
sample-controller sample-controller 是 K8s 官方自定义 CDR 及控制器是实现的例子 通过使用这个自定义 CDR 控制器及阅读它的代码,基本可以了解如何制作一个 CDR 控制器 CDR 运作原理 网上有更好的文章,说明其运作原理: https://www.z…...