pyQt4在单击按钮时绘制矩形

时间:2015-10-10 16:34:24

标签: python button focus pyqt4 drawrect

目标

单击按钮时,我试图在窗口中绘制一个矩形。

问题

当我使用按钮允许绘制矩形时,它会在按钮后面绘制矩形: Rectangle behind button image

如果我最小化然后重新打开窗口,它会正确绘制矩形,所以我认为这是一个焦点问题但是当我试图改变焦点时它没有帮助。

编辑:单击按钮时对原始窗口执行某些操作会在正确的位置绘制矩形。例如:

self.setStyleSheet("background-color: black; color: white")

这是一个非常混乱的解决方案。

守则

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QWidget):

    draw = False

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()
        self.test = self

    def initUI(self):      

        self.setGeometry(400, 400, 400, 400)

        qbtn = QtGui.QPushButton('Paint', self)
        qbtn.clicked.connect(self.buttn)
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(50, 50)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Paint')
        self.show()

    def paintEvent(self, e):

        qp = QtGui.QPainter()
        qp.begin(self)
            self.drawRectangles(qp)
        qp.end()

    def drawRectangles(self, qp):

        if self.draw:
            qp.setBrush(QtGui.QColor(000, 000, 255))
            qp.drawRect(0, 0, 90, 60)

    @QtCore.pyqtSlot()
    def buttn(self):
        self.draw = True


def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:2)

以下方法似乎有效并且似乎不太杂乱:

self.update()