pyside2 widget中创建label 并在label中创建 graphicsView
时间: 2024-03-25 14:37:53 浏览: 75
【Pyside资源】 Pyside2 中嵌入 Matplotlib 实现画图功能
要在 PySide2 的 Widget 中创建一个 Label,并在 Label 中创建一个 GraphicsView,可以按照以下步骤进行:
1. 导入 PySide2 中的 QtWidgets 和 QtGui 模块:
```
from PySide2 import QtWidgets, QtGui
```
2. 创建一个继承自 QtWidgets.QWidget 的子类:
```
class MyWidget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(MyWidget, self).__init__(parent)
```
3. 在构造函数中创建一个 QLabel,并设置其大小和布局:
```
self.label = QtWidgets.QLabel(self)
self.label.setMaximumSize(640, 480) # 设置 Label 的最大尺寸
self.label.setAlignment(QtCore.Qt.AlignCenter) # 设置 Label 内容居中显示
layout = QtWidgets.QVBoxLayout(self) # 创建垂直布局
layout.addWidget(self.label) # 将 Label 添加到布局中
```
4. 在 Label 中创建一个 QGraphicsView,并设置其大小和布局:
```
self.view = QtWidgets.QGraphicsView(self.label)
self.view.setMaximumSize(640, 480) # 设置 GraphicsView 的最大尺寸
self.view.setScene(QtGui.QGraphicsScene(self.view)) # 创建 GraphicsView 对应的 QGraphicsScene
self.label.setLayout(QtWidgets.QVBoxLayout()) # 设置 Label 的布局管理器为垂直布局
self.label.layout().addWidget(self.view) # 将 GraphicsView 添加到 Label 的布局中
```
完整的代码示例:
```
from PySide2 import QtCore, QtWidgets, QtGui
class MyWidget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(MyWidget, self).__init__(parent)
self.label = QtWidgets.QLabel(self)
self.label.setMaximumSize(640, 480)
self.label.setAlignment(QtCore.Qt.AlignCenter)
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self.label)
self.view = QtWidgets.QGraphicsView(self.label)
self.view.setMaximumSize(640, 480)
self.view.setScene(QtGui.QGraphicsScene(self.view))
self.label.setLayout(QtWidgets.QVBoxLayout())
self.label.layout().addWidget(self.view)
if __name__ == '__main__':
app = QtWidgets.QApplication([])
widget = MyWidget()
widget.show()
app.exec_()
```
阅读全文