用pyside创建一个条形图
时间: 2024-05-03 16:18:49 浏览: 119
以下是使用 PySide2 创建条形图的示例代码:
```python
import sys
from PySide2.QtWidgets import QApplication, QMainWindow, QStatusBar
from PySide2.QtGui import QPainter
from PySide2.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Bar chart example")
self.setGeometry(100, 100, 600, 400)
self.statusBar().showMessage("Ready")
self.data = [5, 10, 15, 20, 25]
def paintEvent(self, event):
qp = QPainter()
qp.begin(self)
self.drawBarChart(qp)
qp.end()
def drawBarChart(self, qp):
barWidth = 50
barHeightFactor = 10
x = 50
y = 50
for i, value in enumerate(self.data):
qp.setBrush(Qt.blue)
qp.drawRect(x, y, barWidth, value * barHeightFactor)
qp.drawText(x + 10, y + value * barHeightFactor + 20, str(i+1))
x += barWidth + 20
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个示例中,我们使用 PySide2 库创建了一个名为 `MainWindow` 的主窗口类,并在其中定义了一个 `paintEvent` 函数来绘制条形图。我们使用 `QPainter` 对象来绘制矩形和文本,并使用 `setBrush` 函数设置矩形的填充颜色。`drawRect` 函数用于绘制矩形,`drawText` 函数用于绘制文本。在 `MainWindow` 类的构造函数中,我们还定义了一个名为 `data` 的列表,其中包含要在条形图中显示的数据。
在 `drawBarChart` 函数中,我们使用 `barWidth` 和 `barHeightFactor` 变量来定义条形图中每个条形的宽度和高度。我们使用 `x` 和 `y` 变量来跟踪当前矩形的位置。在 `for` 循环中,我们使用 `enumerate` 函数遍历 `data` 列表中的每个元素,并使用 `drawRect` 和 `drawText` 函数绘制矩形和文本。在每次循环结束时,我们更新 `x` 变量的值,以便下一个矩形可以绘制在正确的位置。
最后,在 `if __name__ == "__main__":` 语句中,我们创建了一个 `QApplication` 对象并启动了事件循环。我们创建了一个 `MainWindow` 对象并将其显示在屏幕上。最后,我们使用 `sys.exit` 函数退出应用程序。
阅读全文