gpt4 book ai didi

python - PyQt5:如何单击按钮开始绘画?

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:45 25 4
gpt4 key购买 nike

以下代码创建一个按钮和一个矩形。我想更改它,以便在单击按钮时绘制矩形。

from PyQt5.QtWidgets import QWidget, QApplication, QPushButton
from PyQt5.QtGui import QPainter, QColor, QBrush
import sys

class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()

def initUI(self):
self.setFixedSize(400, 400)
self.setWindowTitle('Colours')
self.btn = QPushButton("Paint", self)
self.btn.move(100, 100)
# self.btn.clicked.connect(self.paintEvent())
self.show()

def paintEvent(self, e):
qp = QPainter()
qp.begin(self)
self.drawRectangles(qp)
qp.end()

def drawRectangles(self, qp):
col = QColor(0, 0, 0)
col.setNamedColor('#d4d4d4')
qp.setPen(col)
qp.setBrush(QColor(200, 0, 0))
qp.drawRect(10, 15, 90, 60)

if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

感谢您的帮助!

最佳答案

paintEvent() 方法由 Qt 内部调用,不应直接调用它,而应通过 update() 方法调用,但在您的情况下您想要这样做当使用某个条件时,必须创建一个标志来指示它应该被绘制,以上所有内容均在以下代码中实现:

class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
self.flag = False

def initUI(self):
self.setFixedSize(400, 400)
self.setWindowTitle('Colours')
self.btn = QPushButton("Paint", self)
self.btn.move(100, 100)
self.btn.clicked.connect(self.onClicked)
self.show()

def onClicked(self):
self.flag = True
self.update()


def paintEvent(self, e):
if self.flag:
qp = QPainter()
qp.begin(self)
self.drawRectangles(qp)
qp.end()

def drawRectangles(self, qp):
col = QColor(0, 0, 0)
col.setNamedColor('#d4d4d4')
qp.setPen(col)
qp.setBrush(QColor(200, 0, 0))
qp.drawRect(10, 15, 90, 60)

关于python - PyQt5:如何单击按钮开始绘画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47965618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com