2017-10-16 3 views
0

Salut tout le monde je travaille sur l'utilisation des événements QPainter et de la souris et je veux mettre l'arrière-plan du QPainter noir j'ai utilisé ce code, mais ne fonctionne pas Merci d'avanceensemble fond QPainter

class Drawer(QWidget): 

    newPoint = pyqtSignal(QPoint) 
    def __init__(self, parent=None): 
     QWidget.__init__(self, parent) 
     self.path = QPainterPath()  

    def paintEvent(self, event): 
     painter = QPainter(self) 
     painter.setPen(QColor(168, 34, 3)) 
     painter.setFont(QFont('Decorative', 10)) 
     bbrush = QtGui.QBrush(QtGui.QColor(0,0,0),QtCore.Qt.SolidPattern) 
     painter.setBackground(painter,bbrush) 
     painter.drawPath(self.path) 

    def mousePressEvent(self, event): 
     self.path.moveTo(event.pos()) 
     self.update() 

    def mouseMoveEvent(self, event): 
     self.path.lineTo(event.pos()) 
     self.newPoint.emit(event.pos()) 
     self.update() 

    def sizeHint(self): 
     return QSize(400, 400) 

class MyWidget(QWidget): 

    def __init__(self, parent=None): 
     QWidget.__init__(self, parent) 
     self.setLayout(QVBoxLayout()) 
     label = QLabel(self) 
     drawer = Drawer(self) 
     drawer.newPoint.connect(lambda p: label.setText(
         'Coordinates: (%d : %d)' % (p.x(), p.y()))) 
     self.layout().addWidget(label) 
     self.layout().addWidget(drawer) 
+0

'changement painter.setBackground (peintre, bbrush)' 'à painter.setBackground (bbrush)' – eyllanesc

+0

Merci homme, mais ne fonctionne toujours pas, en fait, je l'ensemble du code comme ceci: – hbdz

+0

Je ne comprends pas ce que vous voulez faire, juste commenter parce que la méthode setBackgound() ne nécessite pas de QPainter. Je ne comprends pas ce que vous voulez, vous pourriez montrer une image de ce que vous obtenez et un autre de ce que vous voulez. – eyllanesc

Répondre

0

Si vous essayez juste d'obtenir un fond noir vous pouvez obtenir ce sans paintEvent.

import sys 
from PyQt5.QtWidgets import * 
from PyQt5.QtCore import * 
from PyQt5.QtGui import * 


class Drawer(QWidget): 

    newPoint = pyqtSignal(QPoint) 

    def __init__(self, parent=None): 
     QWidget.__init__(self, parent) 
     self.path = QPainterPath()  

     # set black background 
     pal = self.palette() 
     pal.setColor(QPalette.Background, Qt.black) 
     self.setAutoFillBackground(True) 
     self.setPalette(pal) 

    def mousePressEvent(self, event): 
     self.path.moveTo(event.pos()) 
     self.update() 

    def mouseMoveEvent(self, event): 
     self.path.lineTo(event.pos()) 
     self.newPoint.emit(event.pos()) 
     self.update() 

    def sizeHint(self): 
     return QSize(400, 400) 


class MyWidget(QWidget): 

    def __init__(self, parent=None): 
     QWidget.__init__(self, parent) 
     self.setLayout(QVBoxLayout()) 
     label = QLabel(self) 
     drawer = Drawer(self) 
     drawer.newPoint.connect(lambda p: label.setText(
         'Coordinates: (%d : %d)' % (p.x(), p.y()))) 
     self.layout().addWidget(label) 
     self.layout().addWidget(drawer) 


app = QApplication(sys.argv) 
widget = MyWidget() 
widget.show() 

sys.exit(app.exec_())