首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置QPainter背景

设置QPainter背景
EN

Stack Overflow用户
提问于 2017-10-16 21:02:52
回答 1查看 2.8K关注 0票数 0

大家好,我正在使用QPainter和鼠标事件,我想将QPainter的背景设置为黑色,我使用了这段代码,但没有工作,谢谢提前

代码语言:javascript
复制
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)   
代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2017-10-20 22:40:15

如果你只是想得到一个黑色的背景,你可以得到没有paintEvent。

代码语言:javascript
复制
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_())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46779060

复制
相关文章

相似问题

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