【发布时间】:2020-04-04 20:48:47
【问题描述】:
我正在尝试画一个圆圈而不是点 这是在小部件的任何位置按下事件时绘制红点的类 我想画一个圆(空心圆)作为轮廓,而不是一个隐藏部分图片的实心圆
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Canvas(QWidget):
def __init__(self, photo, *args, **kwargs):
super().__init__(*
args, **kwargs)
self.image = QImage(photo)
self.setFixedSize(self.image.width(), self.image.height())
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
qp = QPainter(self.image)
qp.setRenderHint(QPainter.Antialiasing)
qp.setPen(QPen(Qt.red, 5))
qp.setBrush(Qt.red)
qp.drawPoint(event.pos())
self.update()
def paintEvent(self, event):
qp = QPainter(self)
rect = event.rect()
qp.drawImage(rect, self.image, rect)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
w = QWidget()
self.setCentralWidget(w)
grid = QGridLayout(w)
grid.addWidget(Canvas('photo.jpeg'))
if __name__ == '__main__':
app = QApplication(sys.argv)
gui = MainWindow()
gui.show()
sys.exit(app.exec_())
【问题讨论】:
-
我想第二类定义是非自愿粘贴,对吧?也就是说,我不确定我是否理解您的代码:除了
drawImage函数之外,我看不到任何绘画。 -
我只是注释了它绘制的行,这是一个子文件,我将它导入到具有 GUI 和其他功能的主文件中,我对其进行了编辑并添加了加载图像的功能
-
我仍然看到一个带有缩进的重复类。请按照formatting code 的指南查看您的示例,并在提交编辑之前检查预览,否则我们将难以理解。
-
你来了,我只是放了课程并附上了我正在处理的链接
-
我没看到你想画一个圆圈,那在哪里?您是否阅读过有关QPainter 的文档?另外,您的缩进是错误的;正如我已经建议的那样,请在提交任何编辑之前检查预览。我们必须能够按原样复制、粘贴并尝试运行您的代码。
标签: python-3.x user-interface pyqt5 touch-event qpainter