手机qpython画图_python – QWidget上的QPixmap上的绘图点(pyqt5)

当您使用QtGui.QCursor.pos()获取光标相对于屏幕的坐标时,但是当您想要绘制小部件时,您必须位于小部件的坐标中,因为小部件具有mapToGlobal()方法:

self.mapFromGlobal(QtGui.QCursor.pos())

但在这种情况下还有另一种解决方案,您必须使用返回具有pos()方法中信息的mouseReleaseEvent的事件:

cursor_event.pos()

另一个问题是您创建的标签位于小部件上方,因此您看不到这些点,最简单的方法是使用drawPixmap()方法直接绘制QPixmap.

完整代码:

from PyQt5 import QtWidgets, QtGui, QtCore

class ImageScroller(QtWidgets.QWidget):

def __init__(self):

self.chosen_points = []

QtWidgets.QWidget.__init__(self)

self._image = QtGui.QPixmap("image.png")

def paintEvent(self, paint_event):

painter = QtGui.QPainter(self)

painter.drawPixmap(self.rect(), self._image)

pen = QtGui.QPen()

pen.setWidth(20)

painter.setPen(pen)

painter.setRenderHint(QtGui.QPainter.Antialiasing, True)

painter.drawPoint(300, 300)

painter.drawLine(100, 100, 400, 400)

for pos in self.chosen_points:

painter.drawPoint(pos)

def mouseReleaseEvent(self, cursor_event):

self.chosen_points.append(cursor_event.pos())

# self.chosen_points.append(self.mapFromGlobal(QtGui.QCursor.pos()))

self.update()

if __name__ == '__main__':

import sys

app = QtWidgets.QApplication(sys.argv)

w = ImageScroller()

w.resize(640, 480)

w.show()

sys.exit(app.exec_())

oEpSN.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值