Python+PyQt5: 如何在已有ui窗口里,使用QPainter画矩形?

Ross
  • 19

大家好。

我是python2和PyQt5的新手。想请问一下,如何在已经调入的ui窗口里用QPainter画矩形?

UI窗口是用QT Creator做的。很简单就不上传图了。这个窗口里里只有一个按键,名为“pushButton”

程序目标是:按下pushButton,在当前窗口的里面画一个矩形。

下面是我的代码。运行后,UI窗口可以打开,但一点pushButton,窗口自动关闭。

# -*- coding: utf-8 -*-

import sys
from PyQt5 import QtGui, QtWidgets, uic, QtCore


qtCreatorFile = "F:\\Test.ui"

class MyApp(QtWidgets.QDialog):

    def __init__(self):
        super(MyApp, self).__init__()
        uic.loadUi(qtCreatorFile, self)
        self.show()
        self.pushButton.clicked.connect(self.function_Plot_using_Canvas)


    def function_Plot_using_Canvas(self):

        self.QPainter.setBrush(QColor(0, 0, 0, 127))
        self.QPainter.setPen(Qt.white)

        self.QPainter.drawRect(50,50,50,50)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MyApp()
    sys.exit(app.exec_())


我是新手,自己试了N次,都没搞定。

所以想请高手帮忙指导一下。改一下代码。

感谢万分!

回复
阅读 8k
1 个回答
zhangliganggm
  • 615

在QDialog类下 覆盖 paintevent就可以了。

def paintevent(self, event):
    qp = QPainter()
    qp.begin(self)
    qp.setBrush(QColor(0,0,0))
    qp.drawRect(50,50,50,50)
    qp.end()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏