首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >drawEllipse在图形用户界面上没有显示任何内容

drawEllipse在图形用户界面上没有显示任何内容
EN

Stack Overflow用户
提问于 2020-01-15 15:02:38
回答 1查看 43关注 0票数 0

我使用设计器创建了一个非常简单的GUI。我现在正试图在两个按钮之间画一个圆圈,但由于某种原因,我做不到。我尝试了几种我在网上搜索的方法,但没有一种对我有帮助。

这是我的密码:

代码语言:javascript
复制
from PyQt5 import QtCore, QtGui, QtWidgets

class ApplicationWindow(QtWidgets.QMainWindow):
   def __init__(self):
      super(ApplicationWindow, self).__init__()
      self.ui = Ui_MainWindow()
      self.ui.setupUi(self)

class Ui_MainWindow(object):
   def setupUi(self, MainWindow):
       MainWindow.setObjectName("Dialog")
       MainWindow.resize(298, 207)
       self.centralwidget = QtWidgets.QWidget(MainWindow)
       self.centralwidget.setObjectName("centralwidget")

       self.turnRed = QtWidgets.QPushButton(MainWindow)
       self.turnRed.setGeometry(QtCore.QRect(70, 90, 75, 23))
       self.turnRed.setObjectName("turnRed")

       self.turnBlue = QtWidgets.QPushButton(MainWindow)
       self.turnBlue.setGeometry(QtCore.QRect(190, 90, 75, 23))
       self.turnBlue.setObjectName("turnBlue")
       self.retranslateUi(MainWindow)
       QtCore.QMetaObject.connectSlotsByName(MainWindow)

   def paintEvent(self, e):
       painter = QtGui.QPainter(self)
       painter.setPen(QtGui.QPen(QtCore.Qt.blue, 8, QtCore.Qt.SolidLine))
       painter.drawEllipse(120,60,50,50)



   def retranslateUi(self, MainWindow):
       _translate = QtCore.QCoreApplication.translate
       MainWindow.setWindowTitle(_translate("Dialog", "Dialog"))
       self.turnRed.setText(_translate("Dialog", "RED"))
       self.turnBlue.setText(_translate("Dialog", "GREEN"))



if __name__ == "__main__":
   import sys
   app = QtWidgets.QApplication(sys.argv)
   application = ApplicationWindow()
   application.show()
   sys.exit(app.exec_())

这是GUI:

当我运行这个,我看到两个按钮,但我看不到椭圆/圆?我错过了什么??

备注

我知道更改从设计器生成的代码是不好的,但是我只想看到椭圆,这样我就可以在我的项目上实现相同的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-15 15:11:42

如果您知道更改从构造函数生成的代码是不好的,那么为什么要弹出它呢?

object继承的类没有paintEvent方法。

代码语言:javascript
复制
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
   def setupUi(self, MainWindow):
       MainWindow.setObjectName("Dialog")
       MainWindow.resize(298, 207)
       self.centralwidget = QtWidgets.QWidget(MainWindow)
       self.centralwidget.setObjectName("centralwidget")

       self.turnRed = QtWidgets.QPushButton(MainWindow)
       self.turnRed.setGeometry(QtCore.QRect(70, 90, 75, 23))
       self.turnRed.setObjectName("turnRed")

       self.turnBlue = QtWidgets.QPushButton(MainWindow)
       self.turnBlue.setGeometry(QtCore.QRect(190, 90, 75, 23))
       self.turnBlue.setObjectName("turnBlue")
       self.retranslateUi(MainWindow)
       QtCore.QMetaObject.connectSlotsByName(MainWindow)

   def retranslateUi(self, MainWindow):
       _translate = QtCore.QCoreApplication.translate
       MainWindow.setWindowTitle(_translate("Dialog", "Dialog"))
       self.turnRed.setText(_translate("Dialog", "RED"))
       self.turnBlue.setText(_translate("Dialog", "GREEN"))

class ApplicationWindow(QtWidgets.QMainWindow):
   def __init__(self):
      super(ApplicationWindow, self).__init__()
      self.ui = Ui_MainWindow()
      self.ui.setupUi(self)

   def paintEvent(self, e):
       painter = QtGui.QPainter(self)
       painter.setPen(QtGui.QPen(QtCore.Qt.blue, 8, QtCore.Qt.SolidLine))
       painter.drawEllipse(120, 60, 50, 50)


if __name__ == "__main__":
   import sys
   app = QtWidgets.QApplication(sys.argv)
   application = ApplicationWindow()
   application.show()
   sys.exit(app.exec_())

更新

但是现在我正试图改变画家的颜色,它不让我..。基本上,当我运行这个程序时,我得到了蓝色的圆圈,但是当我试图改变它时(通过点击红色按钮并通过函数连接它),什么都不会发生。请帮我一把好吗?

代码语言:javascript
复制
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("Dialog")
        MainWindow.resize(298, 207)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.turnRed = QtWidgets.QPushButton(MainWindow)
        self.turnRed.setGeometry(QtCore.QRect(70, 90, 75, 23))
        self.turnRed.setObjectName("turnRed")

        self.turnBlue = QtWidgets.QPushButton(MainWindow)
        self.turnBlue.setGeometry(QtCore.QRect(190, 90, 75, 23))
        self.turnBlue.setObjectName("turnBlue")
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("Dialog", "Dialog"))
        self.turnRed.setText(_translate("Dialog", "RED"))
        self.turnBlue.setText(_translate("Dialog", "GREEN"))

class ApplicationWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(ApplicationWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.pen = QtGui.QPen(QtCore.Qt.blue, 8, QtCore.Qt.SolidLine)
        self.ui.turnRed.clicked.connect(self.onRed)
        self.ui.turnBlue.clicked.connect(self.onGreen)

    def paintEvent(self, e):
        painter = QtGui.QPainter(self)
        painter.setPen(self.pen)
        painter.drawEllipse(120, 60, 50, 50)

    def onRed(self):
        self.pen = QtGui.QPen(QtCore.Qt.red, 8, QtCore.Qt.SolidLine)
        self.update()

    def onGreen(self):
        self.pen = QtGui.QPen(QtCore.Qt.green, 8, QtCore.Qt.SolidLine)
        self.update()


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    application = ApplicationWindow()
    application.show()
    sys.exit(app.exec_())

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59754092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档