鍍金池/ 問答/Python  網(wǎng)絡(luò)安全/ Python+PyQt5: 如何在已有ui窗口里,使用QPainter畫矩形?

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

大家好。

我是python2和PyQt5的新手。想請問一下,如何在已經(jīng)調(diào)入的ui窗口里用QPainter畫矩形?

UI窗口是用QT Creator做的。很簡單就不上傳圖了。這個(gè)窗口里里只有一個(gè)按鍵,名為“pushButton”

程序目標(biāo)是:按下pushButton,在當(dāng)前窗口的里面畫一個(gè)矩形。

下面是我的代碼。運(yùn)行后,UI窗口可以打開,但一點(diǎn)pushButton,窗口自動關(guān)閉。

# -*- 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次,都沒搞定。

所以想請高手幫忙指導(dǎo)一下。改一下代碼。

感謝萬分!

回答
編輯回答
不將就

在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()
2017年8月3日 01:21