如何制作由pyqt5中的按钮触发的圆?

问题描述 投票:0回答:1

单击按钮在pyqt5窗口中添加圆圈的代码

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow,QPushButton,QWidget
from PyQt5 import QtGui
from PyQt5.QtCore import QRect,Qt
from PyQt5.QtGui import QPainter,QBrush, QPen
from PyQt5 import QtCore


class Window(QMainWindow):
   def __init__(self):
        super().__init__()
        title="layout management"
        left=500
        top=200
        width=500
        height=400
        iconName="fosseeicon.jpg"
        self.setWindowTitle(title)
        self.setWindowIcon(QtGui.QIcon(iconName))
        self.setGeometry(left, top, width, height)
        self.windowcomponents()
        self.show()
   def windowcomponents(self):
       button=QPushButton("Add", self)
       button.setGeometry(QRect(0, 0, 50, 28))
       button.setIcon(QtGui.QIcon("addbutton.png"))
       button.setToolTip("<h3>This is for creating random circles<h3>")
       button.clicked.connect(self.paintcircle)
       button=QPushButton("Generate Report", self)
       button.setGeometry(QRect(49,0,150,28))
       button.setIcon(QtGui.QIcon("generatereport.png"))
       button.setToolTip("This is for generating pdf report of connection between two circles")
       button=QPushButton("Save", self)
       button.setGeometry(QRect(199,0,120,28))
       button.setIcon(QtGui.QIcon("saveicon.png"))
       button.setToolTip("This is for saving an image of canvas area")

   def paintcircle(self, event):
       painter.begin(self)
       painter.setRenderHint(QPainter.Antialiasing)
       painter.setPen(QPen(Qt.black, 5, Qt.SolidLine))
       painter.drawEllipse(100, 100, 100, 100)
app = QApplication(sys.argv)
ex = Window()
circle=paintcircle()
circle.show()
sys.exit(app.exec_())

这里,我遇到很多错误:

*Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\_pydev_bundle\pydev_umd.py", line 197, in runfile
    pydev_imports.execfile(filename, global_vars, local_vars)  # execute the script
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.3\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:/Users/DishaKhattri/PycharmProjects/helloworld/helloworld.py", line 45, in <module>
    circle=paintcircle()
NameError: name 'paintcircle' is not defined*
python-3.x pycharm pyqt5 qt5 qtwidgets
1个回答
0
投票
class Window(QMainWindow): def __init__(self): .... self.paint_circle = False def paintEvent(self, event): super().paintEvent(event) if self.paint_circle: painter = QtGui.QPainter(self) painter.setRenderHint(QPainter.Antialiasing) painter.setPen(QPen(Qt.black, 5, Qt.SolidLine)) painter.drawEllipse(100, 100, 100, 100) def paintcircle(self, painter): self.paint_circle = True self.update()
© www.soinside.com 2019 - 2024. All rights reserved.