from PyQt5.QtWidgets import QApplication, QGraphicsScene, QGraphicsView, QHBoxLayout, QVBoxLayout, QWidget, QPushButtonfrom PyQt5.QtGui import QPainter, QPen, QColorclass GraphicsWidget(QWidget):def __init__(self):super().__init__()# 创建场景和视图1self.scene1 = QGraphicsScene()self.view1 = QGraphicsView(self.scene1)self.circle_item1 = None# 创建场景和视图2self.scene2 = QGraphicsScene()self.view2 = QGraphicsView(self.scene2)self.rect_item1 = None# 添加按钮self.btn1 = QPushButton('画圆形')self.btn2 = QPushButton('画方形')# 将按钮添加到垂直布局中vlayout = QVBoxLayout()vlayout.addWidget(self.btn1)vlayout.addWidget(self.btn2)# 使用水平布局将两个视图和按钮包装在一起layout = QHBoxLayout()layout.addWidget(self.view1)layout.addWidget(self.view2)layout.addLayout(vlayout)self.setLayout(layout)self.btn1.clicked.connect(self.draw_circle)self.btn2.clicked.connect(self.draw_rect)def draw_circle(self):if self.circle_item1 is not None:return# 在场景1中添加红色圆形self.circle_item1 = self.scene1.addEllipse(0, 0, 50, 50, QPen(QColor("red")))self.view1.setScene(self.scene1)def draw_rect(self):if self.rect_item1 is not None:return# 在场景2中添加蓝色矩形self.rect_item1 = self.scene2.addRect(0, 0, 50, 50, QPen(QColor("blue")))self.view2.setScene(self.scene2)if __name__ == '__main__':app = QApplication([])widget = GraphicsWidget()widget.show()app.exec_()
from PyQt5.QtGui import QPixmapfrom PyQt5.QtWidgets import QApplication, QMainWindow, QGraphicsView, QFileDialog, QGraphicsScene, QGraphicsPixmapItem, QVBoxLayout, QHBoxLayout, QWidget, QPushButton, QMessageBoximport sysclass MainWindow(QMainWindow):def __init__(self):super().__init__()# 初始化UI元素self.setWindowTitle("GraphicsView显示图片")self.resize(800, 600)# 添加两个GraphicsView控件self.graphicsView1 = QGraphicsView()self.graphicsView2 = QGraphicsView()# 添加两个PushButton按钮btn1 = QPushButton("选择图片1", self)btn2 = QPushButton("选择图片2", self)# 连接按钮的clicked信号到槽函数btn1.clicked.connect(self.load_image_1)btn2.clicked.connect(self.load_image_2)# 创建两个竖直布局器,并添加相应的控件vbox1 = QVBoxLayout()vbox1.addWidget(self.graphicsView1)vbox1.addWidget(btn1)vbox2 = QVBoxLayout()vbox2.addWidget(self.graphicsView2)vbox2.addWidget(btn2)# 创建一个水平布局器hbox = QHBoxLayout()hbox.addLayout(vbox1)hbox.addLayout(vbox2)# 创建一个QWidget并将水平布局器设置为它的布局widget = QWidget()widget.setLayout(hbox)# 将QWidget设置为CentralWidget,使其成为主窗口的内容self.setCentralWidget(widget)def load_image_1(self):# 弹出文件对话框选择图片file_name, _ = QFileDialog.getOpenFileName(self, "选择图片", "", "*.png;;*.jpg;;*.bmp")if file_name:# 加载图像pixmap = QPixmap(file_name)# 调整图像大小以匹配GraphicsView控件scene = QGraphicsScene()item = QGraphicsPixmapItem(pixmap.scaled(self.graphicsView1.size()))scene.addItem(item)# 设置GraphicsView的Sceneself.graphicsView1.setScene(scene)def load_image_2(self):# 弹出文件对话框选择图片file_name, _ = QFileDialog.getOpenFileName(self, "选择图片", "", "*.png;;*.jpg;;*.bmp")if file_name:# 加载图像pixmap = QPixmap(file_name)# 调整图像大小以匹配GraphicsView控件scene = QGraphicsScene()item = QGraphicsPixmapItem(pixmap.scaled(self.graphicsView2.size()))scene.addItem(item)# 设置GraphicsView的Sceneself.graphicsView2.setScene(scene)if __name__ == "__main__":app = QApplication(sys.argv)window = MainWindow()window.show()sys.exit(app.exec_())
想了解更多
赶紧扫码关注
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/46471.html