PyQt5:用户可以在其中绘制的绘图表面[重复]
Posted
技术标签:
【中文标题】PyQt5:用户可以在其中绘制的绘图表面[重复]【英文标题】:PyQt5 : Drawing surface in which user can draw [duplicate] 【发布时间】:2020-06-11 14:54:26 【问题描述】:我正在学习 PyQt5,我希望我的 GUI 有一种绘图表面,用户可以在其上绘制任何东西,因此应用程序可以将此绘图作为图像获取(目标是执行分类在那张图上)。
我该怎么做?我找到的只是Qpainter
,它允许我在编写应用程序时进行绘制,但它不会让用户在使用应用程序时动态绘制。
【问题讨论】:
【参考方案1】:QPainter 是用于绘图的表面。下面是一个绘制矩形标志的例子:
import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QColor
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 200, 200)
self.setWindowTitle('Drawing')
self.show()
def paintEvent(self, event):
qp = QPainter()
qp.begin(self)
self.drawFlag(qp)
qp.end()
def drawFlag(self,qp):
qp.setBrush(QColor(255, 0, 0))
qp.drawRect(30, 30, 120, 30)
qp.setBrush(QColor(0, 255, 0))
qp.drawRect(30, 60, 120, 30)
qp.setBrush(QColor(0, 0, 255))
qp.drawRect(30, 90, 120, 30)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
如果你想画一条线,请使用:
qp.drawLine(x1, y1, x2, y2)
鼠标位置:
def mouseMoveEvent(self, event):
print(event.x, event.y)
【讨论】:
以上是关于PyQt5:用户可以在其中绘制的绘图表面[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Jupyter Notebook - 在函数内绘图 - 未绘制图 [重复]