详细学习Pyqt5的10种容器(Containers)

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的20种输入控件(Input Widgets)
详细学习Pyqt5的9种显示控件
详细学习Pyqt5的10种容器(Containers)
详细学习PyQt5与数据库交互
详细学习PyQt5中的多线程
待续。。。

容器和复杂控件在PyQt5界面设计中扮演着至关重要的角色。它们允许开发者创建复杂、多功能的用户界面,提供了更丰富的用户体验和交互方式。本文将深入探讨一系列容器和复杂控件,包括QTabWidget、QStackedWidget、QSplitter、QScrollArea等,以及它们在PyQt5应用程序中的基本用途。

这些控件能够容纳和组织其他基本控件,如按钮、文本框、标签等,从而实现更复杂的界面布局和交互模式。无论是创建选项卡式界面、分割窗格、滚动视图,还是实现向导式界面,这些容器和复杂控件都能够满足各种设计需求。

在接下来的章节中,我们将深入研究每个控件的用途、特性和使用方法,以便开发者能够充分利用它们来打造出令人印象深刻的PyQt5用户界面。
1. QGroupBox - 分组界面元素

QGroupBox是PyQt5中的一个容器控件,它用于将一组相关的界面元素进行分组,从而在界面中创建有组织的部分。这个控件通常用于将一组复选框、单选按钮或其他控件组织在一起,以便用户可以更清晰地理解它们之间的关联性。

主要用途:

  • 组织和分组相关控件,以提高界面的可读性和可操作性。
  • 允许用户在一组选项中进行选择。

QGroupBox的基本用法:
要创建一个QGroupBox,首先需要创建一个QGroupBox对象,然后将其他控件添加到该分组框内。以下是创建和配置QGroupBox的基本步骤:

# 导入必要的模块
from PyQt5.QtWidgets import QApplication, QMainWindow, QGroupBox, QVBoxLayout, QRadioButton# 创建应用程序和主窗口
app = QApplication([])
window = QMainWindow()# 创建一个QGroupBox
group_box = QGroupBox("选项")# 创建一个垂直布局管理器
layout = QVBoxLayout()# 向分组框中添加控件,例如单选按钮
radio_button1 = QRadioButton("选项1")
radio_button2 = QRadioButton("选项2")layout.addWidget(radio_button1)
layout.addWidget(radio_button2)# 将布局设置为分组框的布局
group_box.setLayout(layout)# 将分组框添加到主窗口
window.setCentralWidget(group_box)# 显示主窗口
window.show()
app.exec_()

在这个示例中,我们首先创建了一个QGroupBox,然后创建了一个垂直布局管理器,并将两个单选按钮添加到该布局中。最后,我们将布局设置为QGroupBox的布局,并将QGroupBox添加到主窗口中。

这样,我们就创建了一个简单的分组框,其中包含两个选项。用户可以通过单选按钮选择其中一个选项。

QGroupBox是一个强大的容器控件,可以帮助您组织和管理界面元素,提高用户体验。在实际应用中,您可以根据需要添加更多的控件和自定义分组框的样式。

2. QScrollArea - 添加滚动功能

QScrollArea是PyQt5中用于处理超出视图范围的内容的控件。它允许您将其他控件嵌套在其中,并在内容太大而无法完全显示时启用滚动条,以便用户可以滚动查看所有内容。

主要用途:

  • 处理超出视图范围的内容,如大型文本、图像、表格等。
  • 允许用户在内容过大时进行滚动查看。

QScrollArea的基本用法:
要使用QScrollArea,首先创建一个QScrollArea对象,然后将要嵌套在其中的控件添加到QScrollArea中。以下是创建和配置QScrollArea的基本示例:

# 导入必要的模块
from PyQt5.QtWidgets import QApplication, QMainWindow, QScrollArea, QWidget, QVBoxLayout, QLabel# 创建应用程序和主窗口
app = QApplication([])
window = QMainWindow()# 创建一个QScrollArea
scroll_area = QScrollArea()# 创建一个QWidget作为QScrollArea的子控件
scroll_content = QWidget()# 创建一个垂直布局管理器
layout = QVBoxLayout()# 向垂直布局中添加内容,例如文本标签
for i in range(20):label = QLabel(f"这是第{i + 1}行文本")layout.addWidget(label)# 将布局设置为子控件的布局
scroll_content.setLayout(layout)# 将子控件设置为QScrollArea的小部件
scroll_area.setWidget(scroll_content)# 将QScrollArea添加到主窗口
window.setCentralWidget(scroll_area)# 显示主窗口
window.show()
app.exec_()

在这个示例中,我们首先创建了一个QScrollArea,然后创建了一个QWidget作为其子控件。在子控件内,我们创建了一个垂直布局,并向其中添加了多个文本标签作为示例内容。最后,我们将子控件设置为QScrollArea的小部件,这将启用滚动条以便用户可以滚动查看所有内容。

QScrollArea非常有用,特别是在处理大量内容或需要滚动查看的内容时。它可以帮助您在界面上添加滚动功能,以提高用户体验。根据需要,您可以将不同类型的控件嵌套在QScrollArea中。

3. QToolBox - 创造多功能工具箱

QToolBox是PyQt5中的一个控件,用于创建多功能工具箱界面,通常用于提供多个选项卡。它允许您在一个页面上组织多个子控件,每个子控件对应一个选项卡。用户可以通过切换选项卡来访问不同的子控件内容。

主要用途:

  • 提供多个选项卡,每个选项卡包含不同的内容或工具。
  • 组织和展示多个相关的子控件。

QToolBox的基本用法:
要使用QToolBox,首先创建一个QToolBox对象,然后添加多个子控件作为选项卡的内容。以下是创建和配置QToolBox的基本示例:

# 导入必要的模块
from PyQt5.QtWidgets import QApplication, QMainWindow, QToolBox, QLabel, QPushButton# 创建应用程序和主窗口
app = QApplication([])
window = QMainWindow()# 创建一个QToolBox
toolbox = QToolBox()# 创建第一个选项卡
tab1 = QWidget()
label1 = QLabel("这是第一个选项卡的内容")
tab1.layout = QVBoxLayout()
tab1.layout.addWidget(label1)
tab1.setLayout(tab1.layout)
toolbox.addItem(tab1, "选项卡1")# 创建第二个选项卡
tab2 = QWidget()
label2 = QLabel("这是第二个选项卡的内容")
button = QPushButton("按钮")
tab2.layout = QVBoxLayout()
tab2.layout.addWidget(label2)
tab2.layout.addWidget(button)
tab2.setLayout(tab2.layout)
toolbox.addItem(tab2, "选项卡2")# 添加QToolBox到主窗口
window.setCentralWidget(toolbox)# 显示主窗口
window.show()
app.exec_()

在这个示例中,我们首先创建了一个QToolBox,然后创建了两个不同的选项卡。每个选项卡是一个QWidget,包含了不同的子控件。我们使用toolbox.addItem()方法将这些选项卡添加到QToolBox中,并为每个选项卡指定了标题。用户可以通过点击选项卡标题来切换不同的内容。

QToolBox非常适合在界面中提供多个相关的选项,并以选项卡形式进行组织。您可以根据需要添加更多的选项卡,并在每个选项卡内放置不同类型的子控件,以满足您的应用需求。

4. QTabWidget - 有效管理多标签界面

QTabWidget是PyQt5中用于创建和管理多标签界面的控件。它允许您在同一个窗口中组织多个标签页,每个标签页包含不同的内容或子控件。用户可以通过点击标签页来切换不同的内容,这在创建多功能界面时非常有用。

主要用途:

  • 提供多个标签页,每个标签页包含不同的内容或工具。
  • 有效组织和管理多标签界面。

QTabWidget的基本用法:
要使用QTabWidget,首先创建一个QTabWidget对象,然后为其添加多个标签页。以下是创建和配置QTabWidget的基本示例:

# 导入必要的模块
from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QWidget, QLabel, QPushButton# 创建应用程序和主窗口
app = QApplication([])
window = QMainWindow()# 创建一个QTabWidget
tab_widget = QTabWidget()# 创建第一个标签页
tab1 = QWidget()
label1 = QLabel("这是标签页1的内容")
tab1.layout = QVBoxLayout()
tab1.layout.addWidget(label1)
tab1.setLayout(tab1.layout)
tab_widget.addTab(tab1, "标签页1")# 创建第二个标签页
tab2 = QWidget()
label2 = QLabel("这是标签页2的内容")
button = QPushButton("按钮")
tab2.layout = QVBoxLayout()
tab2.layout.addWidget(label2)
tab2.layout.addWidget(button)
tab2.setLayout(tab2.layout)
tab_widget.addTab(tab2, "标签页2")# 添加QTabWidget到主窗口
window.setCentralWidget(tab_widget)# 显示主窗口
window.show()
app.exec_()

在这个示例中,我们首先创建了一个QTabWidget,然后创建了两个不同的标签页(tab1和tab2)。每个标签页是一个QWidget,包含了不同的子控件。使用tab_widget.addTab()方法,我们将这些标签页添加到QTabWidget中,并为每个标签页指定了标签标题。用户可以通过点击标签页标题来切换不同的内容。

QTabWidget非常适合在界面中提供多个标签页,每个标签页包含不同的功能或信息。您可以根据需要添加更多的标签页,并在每个标签页内放置不同类型的子控件,以满足您的应用需求。此外,您还可以自定义标签的外观和行为,使界面更具吸引力和易用性。

5. QStackedWidget - 实现堆叠界面

QStackedWidget是PyQt5中用于实现多页面布局的控件。它允许您将多个页面叠加在一起,但一次只显示一个页面。这在创建向导、选项卡式界面或多页面应用程序时非常有用。

主要用途:

  • 创建多个页面,但只显示一个页面。
  • 实现向导、选项卡式界面或多页面应用程序。

QStackedWidget的基本用法:
要使用QStackedWidget,首先创建一个QStackedWidget对象,然后为其添加多个页面。以下是创建和配置QStackedWidget的基本示例:

# 导入必要的模块
from PyQt5.QtWidgets import QApplication, QMainWindow, QStackedWidget, QWidget, QLabel, QPushButton# 创建应用程序和主窗口
app = QApplication([])
window = QMainWindow()# 创建一个QStackedWidget
stacked_widget = QStackedWidget()# 创建第一个页面
page1 = QWidget()
label1 = QLabel("这是页面1的内容")
page1.layout = QVBoxLayout()
page1.layout.addWidget(label1)
page1.setLayout(page1.layout)
stacked_widget.addWidget(page1)# 创建第二个页面
page2 = QWidget()
label2 = QLabel("这是页面2的内容")
button = QPushButton("切换到页面1")
button.clicked.connect(lambda: stacked_widget.setCurrentIndex(0))  # 切换到页面1的按钮事件
page2.layout = QVBoxLayout()
page2.layout.addWidget(label2)
page2.layout.addWidget(button)
page2.setLayout(page2.layout)
stacked_widget.addWidget(page2)# 添加QStackedWidget到主窗口
window.setCentralWidget(stacked_widget)# 显示主窗口
window.show()
app.exec_()

在这个示例中,我们首先创建了一个QStackedWidget,然后创建了两个不同的页面(page1和page2)。使用stacked_widget.addWidget()方法,我们将这些页面添加到QStackedWidget中。默认情况下,QStackedWidget会显示第一个添加的页面(即page1)。

我们还创建了一个按钮,点击该按钮将当前页面切换回page1。这是通过使用stacked_widget.setCurrentIndex()方法来实现的。在这种方式下,您可以轻松地在不同的页面之间进行切换。

QStackedWidget非常适合在需要多个页面但一次只显示一个页面的情况下使用。这在创建向导、选项卡式界面或多步骤应用程序时非常有用。您可以根据需要添加更多的页面,并在每个页面中放置不同类型的子控件,以实现复杂的界面布局。

6. QFrame - 为元素提供框架

QFrame是PyQt5中的一个控件,主要用于为其他控件提供框架和背景。它可以改善界面的视觉效果,为元素之间创建分隔线或边框。

主要用途:

  • 为其他控件提供框架、边框和背景。
  • 改进界面的视觉效果。

QFrame的基本用法:
要使用QFrame,首先创建一个QFrame对象,然后将其他控件添加到该QFrame中。以下是一个简单示例,演示如何使用QFrame为两个QLabel提供框架:

# 导入必要的模块
from PyQt5.QtWidgets import QApplication, QMainWindow, QFrame, QLabel, QVBoxLayout, QWidget# 创建应用程序和主窗口
app = QApplication([])
window = QMainWindow()# 创建一个QFrame作为容器
frame = QFrame()# 创建两个QLabel
label1 = QLabel("标签1")
label2 = QLabel("标签2")# 创建一个垂直布局
layout = QVBoxLayout()# 将QLabel添加到布局中
layout.addWidget(label1)
layout.addWidget(label2)# 设置QFrame的布局为垂直布局
frame.setLayout(layout)# 设置QFrame的边框样式
frame.setFrameShape(QFrame.Box)
frame.setLineWidth(2)  # 设置边框宽度# 添加QFrame到主窗口
window.setCentralWidget(frame)# 显示主窗口
window.show()
app.exec_()

在这个示例中,我们首先创建了一个QFrame,然后在该QFrame中创建了两个QLabel。我们使用布局将这两个QLabel添加到QFrame中,然后设置QFrame的边框样式为Box,同时指定了边框的宽度。

QFrame的主要作用是为其他控件提供框架和边框,这可以增强界面的可读性和美观性。您可以根据需要设置不同的边框样式和背景颜色,以满足设计需求。在实际应用中,QFrame通常与其他控件一起使用,以创建具有更好外观和分隔效果的界面元素。

7. QWidget - 基础控件和容器

QWidget是PyQt5中的基础控件,同时也是许多其他控件的父类。它是构建用户界面的基本构建块,具有丰富的功能和灵活性。

主要功能:

  • 作为其他控件的父类,提供了基本的控件功能。
  • 可用于创建自定义控件和容器。

QWidget的基本用法:
在PyQt5中,几乎所有的用户界面元素都是QWidget或其子类。您可以使用QWidget创建窗口、对话框、按钮、文本框等等。以下是一个简单的示例,演示如何创建一个窗口并在其中添加一个按钮:

# 导入必要的模块
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton# 创建应用程序和主窗口
app = QApplication([])
window = QMainWindow()# 创建一个QWidget作为窗口的中央部件
central_widget = QWidget()# 创建一个按钮
button = QPushButton("点击我")# 将按钮添加到QWidget中
central_widget.setCentralWidget(button)# 设置QWidget为主窗口的中央部件
window.setCentralWidget(central_widget)# 显示主窗口
window.show()
app.exec_()

在这个示例中,我们首先创建了一个QWidget作为窗口的中央部件,然后创建了一个按钮,并将按钮添加到QWidget中。最后,我们将QWidget设置为主窗口的中央部件,以便显示在窗口中央。

QWidget的灵活性使其成为自定义控件和容器的理想选择。您可以继承QWidget类并重写其方法,以创建自定义控件,也可以将多个QWidget组合在一起以创建复杂的用户界面。QWidget还提供了丰富的绘图和事件处理功能,可以满足各种界面设计需求。

总之,QWidget是PyQt5中的基础控件,它在用户界面设计中扮演着重要的角色,可以用于创建各种类型的界面元素,同时也是自定义控件和容器的基础。

8. QMdiArea - 多文档界面

QMdiArea(多文档界面区域)是PyQt5中用于管理多个内嵌窗口的控件。它适用于那些需要在单个应用程序中打开和管理多个文档或子窗口的情况。QMdiArea提供了一种方便的方式来组织和管理这些文档,使用户能够轻松切换和操作它们。

主要功能:

  • 允许在单个应用程序中同时打开多个文档窗口。
  • 提供选项卡式或窗口式的界面布局。
  • 支持文档的排列、最小化、最大化和关闭等操作。

QMdiArea的基本用法:
以下是一个示例,演示如何使用QMdiArea创建一个多文档界面,其中包含多个内嵌窗口:

from PyQt5.QtWidgets import QApplication, QMainWindow, QMdiArea, QMdiSubWindow, QTextEditapp = QApplication([])# 创建主窗口
main_window = QMainWindow()
main_window.setWindowTitle("多文档界面示例")# 创建QMdiArea作为主窗口的中央部件
mdi_area = QMdiArea()
main_window.setCentralWidget(mdi_area)# 创建多个内嵌窗口
for i in range(1, 4):sub_window = QMdiSubWindow()sub_window.setWindowTitle(f"文档{i}")text_edit = QTextEdit()sub_window.setWidget(text_edit)mdi_area.addSubWindow(sub_window)main_window.show()
app.exec_()

在这个示例中,我们首先创建了一个主窗口,并将QMdiArea设置为主窗口的中央部件。然后,我们创建了三个内嵌窗口,每个窗口包含一个文本编辑器(使用QTextEdit)。最后,我们使用addSubWindow方法将这些内嵌窗口添加到QMdiArea中。

QMdiArea还支持多种布局选项,您可以根据需要选择选项卡式或窗口式的界面布局。用户可以方便地切换、排列和管理多个文档窗口,使QMdiArea成为处理多文档应用程序的理想选择。

总之,QMdiArea是PyQt5中用于创建多文档界面的控件,它允许在单个应用程序中管理多个文档窗口,提供了丰富的功能来满足多文档应用程序的需求。

9. QDockWidget - 可停靠和可移动的控件

QDockWidget是PyQt5中用于创建可停靠和可移动的控件的控件。它通常用于创建应用程序的工具栏、面板或其他可停靠部件,使用户能够根据需要重新排列和停靠它们。

主要功能:

  • 允许创建可停靠的控件,如工具栏、属性面板等。
  • 用户可以将这些可停靠控件拖动到主窗口的不同位置。
  • 提供了灵活的布局选项,包括停靠在主窗口的四个边缘或浮动在主窗口上方。

QDockWidget的基本用法:
以下是一个示例,演示如何使用QDockWidget创建一个可停靠的工具栏:

from PyQt5.QtWidgets import QApplication, QMainWindow, QDockWidget, QTextEdit, QPushButtonapp = QApplication([])# 创建主窗口
main_window = QMainWindow()
main_window.setWindowTitle("可停靠工具栏示例")# 创建文本编辑器
text_edit = QTextEdit()
main_window.setCentralWidget(text_edit)# 创建QDockWidget作为可停靠的工具栏
dock_widget = QDockWidget("工具栏", main_window)
button = QPushButton("点击我")
dock_widget.setWidget(button)# 将工具栏停靠在主窗口的右侧
main_window.addDockWidget(2, dock_widget)main_window.show()
app.exec_()

在这个示例中,我们首先创建了一个主窗口,并在其中央部件设置了一个文本编辑器。然后,我们创建了一个QDockWidget,将一个按钮添加到其中作为工具栏的内容。最后,我们使用addDockWidget方法将工具栏停靠在主窗口的右侧。

用户可以拖动工具栏到主窗口的不同位置,也可以将其浮动在主窗口上方。这使得QDockWidget非常适合创建可自定义布局的应用程序,用户可以根据需要重新排列控件,以满足其工作流程。

总之,QDockWidget是PyQt5中用于创建可停靠和可移动的控件的控件,它为应用程序提供了灵活的布局选项,允许用户根据需要重新排列和停靠控件,提高了界面的自定义性和用户体验。

10. QAxWidget - 集成ActiveX控件

QAxWidget是PyQt5中用于集成ActiveX控件的控件。ActiveX控件是一种微软开发的技术,用于在Windows平台上创建交互式和可视化的控件,如网页浏览器、媒体播放器、Office文档等。使用QAxWidget,您可以在PyQt5应用程序中嵌入和使用这些ActiveX控件。

主要功能:

  • 允许在PyQt5应用程序中嵌入和使用ActiveX控件。
  • 支持与ActiveX控件的交互和通信。
  • 可以在窗口中显示Web浏览器、Office文档、媒体播放器等。

QAxWidget的基本用法:
以下是一个示例,演示如何使用QAxWidget嵌入Internet Explorer作为ActiveX控件:

from PyQt5.QtWidgets import QApplication, QMainWindow, QAxWidgetapp = QApplication([])# 创建主窗口
main_window = QMainWindow()
main_window.setWindowTitle("ActiveX控件示例")# 创建QAxWidget用于嵌入Internet Explorer
ax_widget = QAxWidget(main_window)
ax_widget.setControl("Shell.Explorer")
ax_widget.show()main_window.setCentralWidget(ax_widget)
main_window.show()app.exec_()

在这个示例中,我们首先创建了一个主窗口,并在其中央部件设置了一个QAxWidget。然后,我们使用setControl方法指定要嵌入的ActiveX控件,这里是"Shell.Explorer",即Internet Explorer。最后,我们将QAxWidget设置为主窗口的中央部件,以显示嵌入的Internet Explorer。

通过使用QAxWidget,您可以在PyQt5应用程序中嵌入各种ActiveX控件,从而实现与这些控件的交互和使用,为您的应用程序增加更多的功能和可视化元素。

总之,QAxWidget是PyQt5中用于集成ActiveX控件的控件,它使您能够在应用程序中嵌入和使用各种ActiveX控件,从而扩展应用程序的功能和可视化元素。

11. 结论

在本篇博客中,我们深入探讨了PyQt5中的容器和控件,它们是创建高效和专业的用户界面的关键元素。以下是一些重要的总结点:

  • 容器和控件在PyQt5界面设计中扮演着重要的角色,它们帮助我们组织和展示应用程序的用户界面元素。

  • QGroupBox允许我们创建分组框,用于组织和分类界面元素,提高用户体验。

  • QScrollArea允许我们添加滚动功能,以处理超出视图范围的内容,确保用户能够访问所有信息。

  • QToolBox是一个多功能的工具箱,用于提供多个选项卡界面,适用于各种应用场景。

  • QTabWidget用于有效管理多标签界面,可自定义标签的外观和行为,为用户提供更好的导航体验。

  • QStackedWidget用于实现多页面布局,允许我们在不同的界面之间进行切换,以响应用户的操作。

  • QFrame可为元素提供框架,改进界面的视觉效果,增强用户界面的吸引力。

  • QWidget是其他控件的基础,我们可以自定义和扩展它,以创建自定义控件。

  • QMdiArea用于创建多文档界面,管理多个内嵌窗口,适用于开发多文档应用程序。

  • QDockWidget是可停靠和可移动的控件,可用于创建灵活的布局,允许用户自定义界面。

这些容器和控件的深入了解对于开发高效和专业的PyQt5用户界面至关重要。它们提供了丰富的选项,可以根据应用程序的需求进行定制和配置。通过合理使用这些元素,开发者可以创建出吸引人和功能强大的应用程序,提供出色的用户体验。

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

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

相关文章

Django rest froamwork-序列化关系

关系字段用于表示模型关系。它们可以应用于 ForeignKey、ManyToManyField 和OneToOneField 关系,也可以应用于反向关系和自定义关系(如GenericForeignKey)。 注意:关系字段是在relations.py中声明的,但按照惯例&#…

使用凌鲨进行内网穿透

为了方便在本地进行开发和调试工作,有时候需要安全地连接内网或Kubernetes集群中的服务。 在net proxy server中可以限制访问用户,也可以设置端口转发的密码。 使用 连接端口转发服务 列出可转发端口 可转发端口是服务端设置的,不会暴露真…

自恋的领导

自恋的领导》??? 在职场中,我曾经遇到过一位自恋狂的领导。他总是自吹自擂,自我标榜,而且对团队合作态度消极,经常拖后腿。他的言行举止充满了负能量,让人感到非常不舒服。例如&…

13 OAuth2.0实战:微服务接收身份信息

上一节介绍了网关层面的统一认证鉴权,将解析过的身份信息加密放入请求头传递给下游微服务; 那么下游微服务如何接收网关传递的身份信息? 很简单,只需要在每个服务的过滤器中从请求头接收,将其解密。 木谷博客系统中是将该过滤器统一放在blog-common-starter中,这样后续…

锁表的原因及解决办法

引言 作为开发人员,我们经常会和数据库打交道。 当我们对数据库进行修改操作的时候,例如添加字段,更新记录等,没有正确评估该表在这一时刻的使用频率,直接进行修改,致使修改操作长时间无法响应&#xff0…

2023年【起重机司机(限桥式起重机)】报名考试及起重机司机(限桥式起重机)考试资料

题库来源:安全生产模拟考试一点通公众号小程序 2023年【起重机司机(限桥式起重机)】报名考试及起重机司机(限桥式起重机)考试资料,包含起重机司机(限桥式起重机)报名考试答案和解析及起重机司机(限桥式起重机)考试资料练习。安全生产模拟考试一点通结合…

正是阶段高等数学复习--函数极限的计算

之前在预备阶段中函数极限的解决方式分三步,第一步观察形式并确定用什么方式来解决,第二步化简,化简方式一共有7种,分别是最重要的三种(等价替换、拆分极限存在的项、计算非零因子)以及次重要的4种&#xf…

vGPU_unlock实现消费级显卡虚拟化

vGPU_unlock实现显卡虚拟化 机器详情换源(清华源)配置引导文件配置内核添加禁止nouveau模块设置内核参数,以便虚拟机使用PCI设备的直通功能更新所有已经有 initramfs 的内核版本的 initramfs 镜像下载所需的软件拉取代码初次验证创建用于vGPU解锁的文件下载vgpu所需的驱动安…

BurpSuite 请求/响应解密插件开发

BurpSuite 请求/响应解密插件开发 本文主要记录如何利用burp官方的新版API即MontoyaApi 写一个请求/响应的解密插件。背景下面是主要的操作步骤:根据上述操作做完之后,生成,然后在burp中加载插件,然后通关抓包看效果,具…

DevEco Studio 调整开发工具中的字体大小与行高

我们打开编辑器 选择 左上角 File 下的 Settings 将左侧菜单栏 编辑 展开 我们在编辑下面 选择 Font 然后 如下图指向的两个位置 我们可以调整它的字体大小和行高 设置好之后 右下角 点击 Apply 应用 然后点击 OK即可 当然 你按着 Ctrl 然后鼠标滚动 也可以像浏览器那样 拉…

维基百科文章爬虫和聚类:高级聚类和可视化

一、说明 维基百科是丰富的信息和知识来源。它可以方便地构建为带有类别和其他文章链接的文章,还形成了相关文档的网络。我的 NLP 项目下载、处理和应用维基百科文章上的机器学习算法。 在我的上一篇文章中,KMeans 聚类应用于一组大约 300 篇维基百科文…

Spring IOC—基于XML配置和管理Bean 万字详解(通俗易懂)

目录 一、前言 二、通过类型来获取Bean 0.总述(重要) : 1.基本介绍 : 2.应用实例 : 三、通过指定构造器为Bean注入属性 1.基本介绍 : 2.应用实例 : 四、通过p命名空间为Bean注入属性 1.基本介绍 : 2.应用实例 : 五、通过ref引用实现Bean的相…

吸烟(抽烟)检测和识别2:Pytorch实现吸烟(抽烟)检测和识别(含吸烟(抽烟)数据集和训练代码)

吸烟(抽烟)检测和识别2:Pytorch实现吸烟(抽烟)检测和识别(含吸烟(抽烟)数据集和训练代码) 目录 吸烟(抽烟)检测和识别2:Pytorch实现吸烟(抽烟)检测和识别(含吸烟(抽烟)数据集和训练代码) 1.吸烟(抽烟)检测和识别 2.吸烟(抽烟)数据集 (1&am…

c++中函数的引用

函数中的引用 引用可以作为函数的形参 不能返回局部变量的引用 #include<iostream> #include<stdlib.h> using namespace std; //形参是引用 void swap(int *x, int *y)//*x *y表示对x y取地址 { int tmp *x; *x *y; *y tmp; } void test01() { …

用两个栈实现队列

目录 一、栈的基本结构及其接口 二、我的队列结构定义 三、我的队列创建及其初始化 四、我的队列入队 五、我的队列出队 六、我的队列取队头元素 七、我的队列判空 八、我的队列销毁 一、栈的基本结构及其接口 //栈的结构定义 typedef int STDataType;typedef struct St…

OpenGL ES入门教程(三)之为平面桌子添加混合色

OpenGL ES入门教程&#xff08;三&#xff09;之为平面桌子添加渐变色 前言零、OpenGL ES实现混合色的原理一、修改绘制的桌子结构1. 三角形扇介绍2. 基于三角形扇结构绘制平面桌子 二、为每个顶点添加颜色属性三、修改着色器1. 顶点着色器2. 片段这色器 四、绘制具有混合颜色的…

7.24 SpringBoot项目实战【审核评论】

文章目录 前言一、编写控制器二、编写服务层三、Postman测试前言 我们在 上文 7.23 已经实现了 评论 功能,本文我们继续SpringBoot项目实战 审核评论 功能。逻辑如下: 一是判断管理员权限,关于角色权限校验 在 7.5 和 7.6 分别基于 拦截器Interceptor 和 切面AOP 都实现过…

Qt OpenCV 学习(二):两个简单图片识别案例

1. 寻找匹配物体 1.1 mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <opencv2/opencv.hpp>#include <QImage> #include <QString> #include <QPixmap>QT_BEGIN_NAMESPACE namespace Ui { class Main…

TimeGPT:时序预测领域终于迎来了第一个大模型

时间序列预测领域在最近的几年有着快速的发展&#xff0c;比如N-BEATS、N-HiTS、PatchTST和TimesNet。 大型语言模型(llm)最近在ChatGPT等应用程序中变得非常流行&#xff0c;因为它们可以适应各种各样的任务&#xff0c;而无需进一步的训练。 这就引出了一个问题:时间序列的…