北京网站优化厂家,汕头网页设计公司,广州3d网站开发,营销型网站搭建的工作文章目录 PyQt5超详细教程前言第7部分#xff1a;生成图表与数据可视化7.1 matplotlib 与 PyQt5 的结合7.2 在 PyQt5 中嵌入 matplotlib 图表示例 1#xff1a;嵌入简单的 matplotlib 图表代码详解#xff1a; 7.3 动态生成图表示例 2#xff1a;动态更新图表代码详解… 文章目录 PyQt5超详细教程前言第7部分生成图表与数据可视化7.1 matplotlib 与 PyQt5 的结合7.2 在 PyQt5 中嵌入 matplotlib 图表示例 1嵌入简单的 matplotlib 图表代码详解 7.3 动态生成图表示例 2动态更新图表代码详解 7.4 在应用程序中展示不同类型的图表示例 3展示不同类型的图表代码详解 7.5 总结 第8部分对话框QDialog与用户交互8.1 什么是 QDialog8.2 使用 QMessageBox 创建消息对话框示例 1创建简单的消息对话框代码详解 8.3 使用 QInputDialog 获取用户输入示例 2使用 QInputDialog 获取文本输入代码详解 8.4 自定义对话框示例 3创建自定义对话框代码详解 8.5 总结 7-8部分总结图表与对话框 PyQt5超详细教程
前言
接
【Python篇】PyQt5 超详细教程——由入门到精通序篇 【Python篇】PyQt5 超详细教程——由入门到精通中篇一
建议把代码复制到pycahrm等IDE上面看实际效果方便理解嗷❤️ 第7部分生成图表与数据可视化 7.1 matplotlib 与 PyQt5 的结合
matplotlib 是 Python 中最常用的 2D 数据可视化库它可以生成各种类型的图表包括折线图、柱状图、饼图等。在 PyQt5 中你可以使用 matplotlib 来生成图表并将这些图表嵌入到 PyQt5 的窗口中。 7.2 在 PyQt5 中嵌入 matplotlib 图表
为了在 PyQt5 应用中显示 matplotlib 图表我们需要使用 matplotlib 的 FigureCanvas。FigureCanvas 是一个特殊的组件它允许将 matplotlib 的绘图窗口嵌入到 PyQt5 界面中。首先我们来看如何在 PyQt5 窗口中嵌入一个简单的折线图。
示例 1嵌入简单的 matplotlib 图表
import sys
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from PyQt5.QtWidgets import QApplication, QMainWindowclass PlotCanvas(FigureCanvas):def __init__(self, parentNone):fig, self.ax plt.subplots() # 创建一个图表对象super().__init__(fig) # 将图表对象传给 FigureCanvas# 在这里绘制图表self.plot()def plot(self):# 数据x [0, 1, 2, 3, 4, 5]y [10, 1, 20, 3, 40, 5]# 绘制折线图self.ax.plot(x, y, label折线图示例)# 添加标签和图例self.ax.set_title(PyQt5 中的 matplotlib 示例)self.ax.set_xlabel(X 轴)self.ax.set_ylabel(Y 轴)self.ax.legend()class MainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle(matplotlib 与 PyQt5 示例)# 创建一个 PlotCanvas 对象嵌入到 PyQt5 中self.canvas PlotCanvas(self)# 设置图表作为中央控件self.setCentralWidget(self.canvas)# 创建应用程序对象
app QApplication(sys.argv)
window MainWindow()
window.show()# 进入应用程序的事件循环
sys.exit(app.exec_())代码详解 FigureCanvasQTAgg FigureCanvas 是 matplotlib 中的一个特殊控件用于将 matplotlib 图表嵌入到 Qt 界面中。我们通过 FigureCanvasQTAgg 继承 FigureCanvas并创建一个类 PlotCanvas用于绘制图表。 plot() 方法 在 plot() 方法中我们定义了要展示的数据 x 和 y并使用 ax.plot() 方法绘制折线图。set_title()、set_xlabel()、set_ylabel() 用于设置图表的标题和轴标签legend() 添加图例。 MainWindow 在主窗口 MainWindow 中我们创建了 PlotCanvas 实例并将其作为窗口的中央控件。这样matplotlib 绘制的图表就会显示在窗口中。 7.3 动态生成图表
在某些应用场景中图表需要根据用户的输入或数据的变化实时更新。接下来我们展示如何在 PyQt5 中动态生成和更新 matplotlib 图表。
示例 2动态更新图表
import sys
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidgetclass PlotCanvas(FigureCanvas):def __init__(self, parentNone):fig, self.ax plt.subplots()super().__init__(fig)def plot(self, data):# 清除当前图表内容self.ax.clear()# 重新绘制图表self.ax.plot(data, label随机数据)self.ax.set_title(动态更新的图表)self.ax.set_xlabel(X 轴)self.ax.set_ylabel(Y 轴)self.ax.legend()# 刷新图表以显示新数据self.draw()class MainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle(动态更新 matplotlib 图表)# 创建一个图表画布self.canvas PlotCanvas(self)# 创建按钮self.button QPushButton(生成随机数据, self)self.button.clicked.connect(self.update_plot)# 创建一个布局将按钮和图表添加到布局中layout QVBoxLayout()layout.addWidget(self.canvas)layout.addWidget(self.button)# 创建一个 QWidget 容器将布局设置到容器中container QWidget()container.setLayout(layout)# 设置容器为主窗口的中央控件self.setCentralWidget(container)def update_plot(self):# 生成随机数据data np.random.rand(10)# 更新图表self.canvas.plot(data)# 创建应用程序对象
app QApplication(sys.argv)
window MainWindow()
window.show()# 进入应用程序的事件循环
sys.exit(app.exec_())代码详解 动态更新图表 在 PlotCanvas 类中我们通过 self.ax.clear() 清除之前的绘图内容然后通过 self.ax.plot(data) 绘制新的数据最后调用 self.draw() 刷新图表。 update_plot() 方法 当用户点击按钮时update_plot() 方法生成一组新的随机数据并调用 self.canvas.plot(data) 更新图表。 布局管理 我们使用 QVBoxLayout() 创建一个垂直布局将图表和按钮依次排列并通过 setCentralWidget() 设置整个布局为窗口的中央控件。 7.4 在应用程序中展示不同类型的图表
matplotlib 支持多种类型的图表包括折线图、柱状图、饼图等。接下来我们展示如何在 PyQt5 中展示这些不同类型的图表。
示例 3展示不同类型的图表
import sys
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from PyQt5.QtWidgets import QApplication, QMainWindow, QComboBox, QVBoxLayout, QWidgetclass PlotCanvas(FigureCanvas):def __init__(self, parentNone):fig, self.ax plt.subplots()super().__init__(fig)def plot_line_chart(self):self.ax.clear()x [0, 1, 2, 3, 4, 5]y [10, 1, 20, 3, 40, 5]self.ax.plot(x, y, label折线图)self.ax.set_title(折线图)self.ax.legend()self.draw()def plot_bar_chart(self):self.ax.clear()x [A, B, C, D]y [5, 7, 3, 8]self.ax.bar(x, y, label柱状图)self.ax.set_title(柱状图)self.ax.legend()self.draw()def plot_pie_chart(self):self.ax.clear()sizes [15, 30, 45, 10]labels [A, B, C, D]self.ax.pie(sizes, labelslabels, autopct%1.1f%%)self.ax.set_title(饼图)self.draw()class MainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle(展示不同类型的图表)# 创建图表画布self.canvas PlotCanvas(self)# 创建一个下拉菜单供用户选择图表类型self.combo_box QComboBox(self)self.combo_box.addItems([折线图, 柱状图, 饼图])self.combo_box.currentIndexChanged.connect(self.update_chart)# 创建布局将下拉菜单和图表添加到布局中layout QVBoxLayout()layout.addWidget(self.canvas)layout.addWidget(self.combo_box)container QWidget()container.setLayout(layout)self.setCentralWidget(container)def update_chart(self, index):if index 0:self.canvas.plot_line_chart()elif index 1:self.canvas.plot_bar_chart()elif index 2:self.canvas.plot_pie_chart()# 创建应用程序对象
app QApplication(sys.argv)
window MainWindow()
window.show()# 进入应用程序的事件循环
sys.exit(app.exec_())代码详解 展示不同图表 PlotCanvas 类包含了三个方法用于展示折线图、柱状图和饼图。根据用户的选择通过 update_chart() 方法切换不同的图表展示。 QComboBox QComboBox 是一个下拉菜单控件允许用户选择不同的图表类型。每次选择不同的图表类型时会触发 currentIndexChanged 信号调用 update_chart() 方法更新图表。 7.5 总结
在这一部分中我们学习了如何在 PyQt5 中嵌入 matplotlib 图表实现数据的可视化展示。通过 matplotlib 的强大功能我们能够在应用程序中展示折线图、柱状图、饼图等多种类型的图表。同时我们还展示了如何动态更新图表并结合用户输入来实时调整图表内容。
关键点
FigureCanvas 允许将 matplotlib 图表嵌入到 PyQt5 界面中。图表可以通过 self.ax.clear() 清除旧内容并通过 self.ax.plot() 等方法动态更新。通过用户输入或按钮点击可以动态生成和展示不同类型的图表。 第8部分对话框QDialog与用户交互 8.1 什么是 QDialog
QDialog 是 PyQt5 中的一种窗口类用于创建对话框。这种窗口通常是弹出的并且用于让用户完成某个操作后再关闭比如显示提示信息、要求用户确认、或者让用户输入数据。与主窗口 QMainWindow 不同QDialog 通常不含有菜单栏、工具栏等复杂组件。
对话框分为两类
模态对话框Modal Dialog阻止用户在关闭对话框前与主窗口进行交互。用户必须在对话框内完成操作后才能返回主窗口。这种对话框常用于提示信息或者重要的用户操作。非模态对话框Non-modal Dialog允许用户在对话框打开时仍然与主窗口进行交互。对话框和主窗口之间的操作可以同时进行。
常见的对话框 包括
消息对话框QMessageBox用于向用户显示消息如信息提示、警告、错误等。输入对话框QInputDialog用于获取用户输入如文本、数字或选项。自定义对话框Custom Dialog你可以根据需求创建包含多种控件的自定义对话框。 8.2 使用 QMessageBox 创建消息对话框
QMessageBox 是 PyQt5 中用于显示消息或提示信息的标准对话框。它可以显示简单的提示信息、警告、错误消息甚至让用户在多种选项中做出选择。
示例 1创建简单的消息对话框
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, QPushButtonclass MainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle(QMessageBox 示例)# 创建一个按钮self.button QPushButton(显示消息, self)self.button.clicked.connect(self.show_message)# 设置按钮为窗口的中央控件self.setCentralWidget(self.button)def show_message(self):# 创建消息对话框msg_box QMessageBox()# 设置对话框标题msg_box.setWindowTitle(消息)# 设置对话框显示的文本msg_box.setText(这是一个简单的消息对话框。)# 设置对话框的按钮msg_box.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) # 添加 OK 和 Cancel 按钮# 设置对话框的图标msg_box.setIcon(QMessageBox.Information) # 设置图标为信息图标# 显示对话框并获取用户的选择result msg_box.exec_()# 判断用户点击了哪个按钮if result QMessageBox.Ok:print(用户点击了 OK 按钮)else:print(用户点击了 Cancel 按钮)# 创建应用程序对象
app QApplication(sys.argv)
window MainWindow()
window.show()# 进入应用程序的事件循环
sys.exit(app.exec_())代码详解 QMessageBox QMessageBox 是一个标准的对话框用于向用户展示信息。在 PyQt5 中QMessageBox 可以显示带有图标和按钮的消息框并且能够让用户进行确认。 setText() setText() 用于设置对话框的主要信息。在这个例子中显示的内容是“这是一个简单的消息对话框”。 setWindowTitle() setWindowTitle() 设置对话框窗口的标题用户可以通过这个标题了解到对话框的主题。 setStandardButtons() setStandardButtons() 允许你为对话框添加常用的按钮如 OK、Cancel、Yes、No 等。在这里我们添加了 OK 和 Cancel 两个按钮用户可以选择其中之一。 setIcon() setIcon() 设置对话框左侧的图标。可以选择的图标类型包括 QMessageBox.Information信息图标、QMessageBox.Warning警告图标、QMessageBox.Critical错误图标等。 exec_() exec_() 是一个阻塞函数会弹出对话框并等待用户操作。这个函数返回用户选择的按钮如 OK 或 Cancel。根据返回值我们可以判断用户的操作并采取不同的行动。 8.3 使用 QInputDialog 获取用户输入
QInputDialog 是一个标准对话框用于从用户处获取输入。它支持多种类型的输入包括文本、整数、浮点数和下拉选择。
示例 2使用 QInputDialog 获取文本输入
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QInputDialog, QPushButtonclass MainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle(QInputDialog 示例)# 创建按钮self.button QPushButton(获取用户输入, self)self.button.clicked.connect(self.get_input)# 设置按钮为中央控件self.setCentralWidget(self.button)def get_input(self):# 弹出输入对话框获取用户输入的文本text, ok QInputDialog.getText(self, 输入对话框, 请输入您的姓名)# 如果用户点击了 OK 按钮并且输入了文本if ok and text:print(f用户输入{text})# 创建应用程序对象
app QApplication(sys.argv)
window MainWindow()
window.show()# 进入应用程序的事件循环
sys.exit(app.exec_())代码详解 QInputDialog.getText() QInputDialog.getText() 方法用于创建一个单行文本输入对话框用户可以在其中输入内容。这个方法返回两个值 text 是用户输入的内容。ok 是一个布尔值表示用户是否点击了 OK 按钮。如果用户点击 Cancelok 值为 False。 获取用户输入 当用户点击 OK 按钮并输入了内容时程序会输出用户输入的文本。如果用户取消了输入对话框则不会输出任何内容。 8.4 自定义对话框
除了使用标准的消息框和输入框PyQt5 允许你创建自定义对话框。通过自定义对话框你可以根据需求添加任意控件如按钮、文本框、复选框等。
示例 3创建自定义对话框
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QLabel, QVBoxLayout, QPushButton# 自定义对话框类继承自 QDialog
class CustomDialog(QDialog):def __init__(self):super().__init__()# 设置对话框的标题self.setWindowTitle(自定义对话框)# 创建标签控件显示提示信息label QLabel(这是一个自定义对话框)# 创建关闭按钮点击时关闭对话框close_button QPushButton(关闭)close_button.clicked.connect(self.accept) # 调用 accept() 方法关闭对话框# 创建布局将标签和按钮添加到布局中layout QVBoxLayout()layout.addWidget(label)layout.addWidget(close_button)# 设置对话框的布局self.setLayout(layout)class MainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle(自定义对话框示例)# 创建按钮用于打开自定义对话框self.button QPushButton(打开自定义对话框, self)self.button.clicked.connect(self.show_custom_dialog)# 设置按钮为窗口的中央控件self.setCentralWidget(self.button)def show_custom_dialog(self):# 创建并显示自定义对话框dialog CustomDialog()# 使用 exec_() 方法显示对话框并等待用户操作if dialog.exec_():print(自定义对话框已关闭)# 创建应用程序对象
app QApplication(sys.argv)
window MainWindow()
window.show()# 进入应用程序的事件循环
sys.exit(app.exec_())代码详解 自定义对话框类 CustomDialog 类继承自 QDialog用于创建自定义对话框。对话框的外观和行为由你自行定义你可以在其中添加任意控件。 布局管理 通过 QVBoxLayout()我们将对话框中的控件如标签和按钮垂直排列。你可以根据需要使用不同的布局管理器来组织控件如 QHBoxLayout水平布局或 QGridLayout网格布局。 accept() 方法 当用户点击关闭按钮时调用 accept() 方法关闭对话框。accept() 是 QDialog 的内置方法它表示对话框的操作已被接受并会关闭对话框。 exec_() 方法 exec_() 方法用于显示对话框并等待用户操作。对话框的行为是模态的这意味着用户必须处理完对话框后才能返回主窗口。 8.5 总结
在这一部分中我们详细介绍了 PyQt5 中的几种对话框包括
QMessageBox用于显示消息或提示信息的对话框。QInputDialog用于获取用户输入的对话框支持文本、整数和浮点数输入。自定义对话框通过继承 QDialog你可以根据需求创建包含任意控件的对话框。
关键点
对话框可以是模态的用户必须处理完对话框后才能返回主窗口。PyQt5 提供了多种标准对话框帮助快速实现常见的用户交互。自定义对话框非常灵活适合复杂的交互需求。 7-8部分总结图表与对话框
在第7至第8部分中我们探讨了如何在 PyQt5 中使用 matplotlib 实现数据的可视化并展示了如何在界面中嵌入折线图、柱状图、饼图等多种图表。同时我们介绍了 PyQt5 中的对话框包括标准消息对话框、输入对话框以及自定义对话框。这些对话框在用户交互中起到了重要作用允许用户获取提示、输入信息或确认操作。 以上就是关于【Python篇】PyQt5 超详细教程——由入门到精通中篇二的内容啦各位大佬有什么问题欢迎在评论区指正或者私信也行哦您的支持是我创作的最大动力❤️