Python 将图像插入QGridLayout并在PyQt5中的图像顶部绘制
我是PyQt的新手,我正在尝试制作一个应用程序,左边有一个QPixmap,可以在上面绘制,右边有一个QTextEdit(用于简单的OCR GUI)。 我看了看: 但我无法将其与下面的代码连接起来(我的头发都快掉光了,抓头了!!) 当我尝试修改下面的代码时,我得到的是一个QPixmap作为背景的QMainWindow,可以用鼠标在其上绘制,而QPixmap在其正确位置的第二次出现则无法在其上绘制。有人能告诉我我做错了什么吗? 多谢各位Python 将图像插入QGridLayout并在PyQt5中的图像顶部绘制,python,pyqt,pyqt5,qpainter,qgridlayout,Python,Pyqt,Pyqt5,Qpainter,Qgridlayout,我是PyQt的新手,我正在尝试制作一个应用程序,左边有一个QPixmap,可以在上面绘制,右边有一个QTextEdit(用于简单的OCR GUI)。 我看了看: 但我无法将其与下面的代码连接起来(我的头发都快掉光了,抓头了!!) 当我尝试修改下面的代码时,我得到的是一个QPixmap作为背景的QMainWindow,可以用鼠标在其上绘制,而QPixmap在其正确位置的第二次出现则无法在其上绘制。有人能告诉我我做错了什么吗? 多谢各位 # https://stackoverflow.com/que
# https://stackoverflow.com/questions/51475306/
import sys
from PyQt5.QtCore import Qt, QPoint
from PyQt5.QtWidgets import QMainWindow, QApplication,QGridLayout, QLabel, QWidget, QTextEdit
from PyQt5.QtGui import QPixmap, QPainter, QPen
class Menu(QMainWindow):
def __init__(self):
super().__init__()
self.drawing = False
self.lastPoint = QPoint()
self.image = QPixmap("S3.png")
self.setGeometry(100, 100, 500, 300)
self.resize(self.image.width(), self.image.height())
layout = QGridLayout()
# Add a QTextEdit box
self.edit = QTextEdit()
layout.addWidget(self.edit, 0, 0, 10, 20)
# This:
# https://stackoverflow.com/questions/52616553
# indicates that a QPixmap must be put into a label to insert into a QGridLayout
self.label = QLabel()
self.label.setPixmap(self.image)
layout.addWidget(self.label, 10, 20, 10, 20)
# https://stackoverflow.com/questions/37304684/
self.widget = QWidget()
self.widget.setLayout(layout)
self.setCentralWidget(self.widget)
self.show()
def paintEvent(self, event):
painter = QPainter(self)
painter.drawPixmap(self.rect(), self.image)
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self.drawing = True
self.lastPoint = event.pos()
print(self.lastPoint)
def mouseMoveEvent(self, event):
if event.buttons() and Qt.LeftButton and self.drawing:
painter = QPainter(self.image)
painter.setPen(QPen(Qt.red, 3, Qt.SolidLine))
painter.drawLine(self.lastPoint, event.pos())
print(self.lastPoint,event.pos())
self.lastPoint = event.pos()
self.update()
def mouseReleaseEvent(self, event):
if event.button == Qt.LeftButton:
self.drawing = False
if __name__ == '__main__':
app = QApplication(sys.argv)
mainMenu = Menu()
sys.exit(app.exec_())
每个小部件都必须完成特定的任务,因此我创建了一个小部件,它只具有绘制功能,主小部件作为绘制小部件和QTextEdit的容器
从PyQt5导入QtCore、QtGui、qtwidget
类标签(qtwidts.QWidget):
def uuu init uuu(self,parent=None):
超级(标签,自我)。\uuuu初始化\uuuuuuuu(父级)
self.image=QtGui.QPixmap(“S3.png”)
self.drawing=False
self.lastPoint=QtCore.QPoint()
def paintEvent(自身,事件):
painter=QtGui.QPainter(自)
painter.drawPixmap(QtCore.QPoint(),self.image)
def鼠标压力事件(自身、事件):
如果event.button()==QtCore.Qt.LeftButton:
self.drawing=True
self.lastPoint=event.pos()
def mouseMoveEvent(自身、事件):
如果event.buttons()和QtCore.Qt.LeftButton与self.drawing:
painter=QtGui.QPainter(self.image)
painter.setPen(QtGui.QPen(QtCore.Qt.red,3,QtCore.Qt.SolidLine))
绘制线(self.lastPoint,event.pos())
self.lastPoint=event.pos()
self.update()
def mouseReleaseEvent(自身,事件):
如果event.button==QtCore.Qt.LeftButton:
self.drawing=False
def sizeHint(自身):
返回self.image.size()
类MainWindow(QtWidgets.QMainWindow):
def uuu init uuu(self,parent=None):
super()。\uuuu init\uuuu(父级)
self.label=label()
self.textedit=QtWidgets.QTextEdit()
widget=qtwidts.QWidget()
self.setCentralWidget(小部件)
lay=qtwidts.QHBoxLayout(小部件)
lay.addWidget(self.label,alignment=QtCore.Qt.AlignCenter)
lay.addWidget(self.textedit)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
w=主窗口()
w、 show()
sys.exit(app.exec_())
我感觉原作者可能会回复我的邮件,非常感谢。我看了很多与你相关的代码,无法把这些点连接起来,但这个例子确实让我很受启发。再次感谢