Pyqt:如何删除在paintEvent绘制的文本?

2024-05-23 15:13:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个Roatatable文本类,它继承了QWidget,它工作得很好。 但当我试图用 label.destroy(), 它不会消失。在

我尝试使用QPainter.eraseRect(),将painter改为{},然后 正在执行label.painter.eraseRect()。 但我失败了。在

代码如下:

class RotatedText(QtWidgets.QWidget):
    def __init__(self, x, y, angle, text, color):
        QtWidgets.QWidget.__init__(self)
        # Setting variables...
        self.setGeometry(0, 0, 1920, 1080)
        # I did this because texts ain't showing if they're too far away from (0, 0)

    def paintEvent(self, event):
        painter = QtGui.QPainter(self)
        painter.translate(self.x, self.y)
        painter.rotate(self.angle)
        painter.setPen(QtGui.QPen(QtGui.QColor(self.color_r, self.color_g, self.color_b)))
        painter.setFont(QtGui.QFont("나눔고딕", 20))
        painter.drawText(0, 0, self.text)
        painter.end()

class MainWindow(QtWidgets.QDialog):
    def __init__(self, parent=None):
        label = RotatedText(50, 50, 45, "hi", (0, 0, 0))
        label.setParent(self)
        label.show()

(删除与此无关的其他代码)

drawText()绘制的文本在一个小部件上,所以我认为销毁小部件也可以删除文本。。。 我怎么把它擦掉?在

用继承QLabel的新类替换这个类是可以的。它会更容易使用,但我做不到,所以我使用这个类。在

顺便说一句,抹掉所有已经画过的东西对我来说不是一个合适的解决方案,因为有很多文本,我只想删除一个。在


Tags: 代码文本selfinitdeflabelclasscolor
1条回答
网友
1楼 · 发布于 2024-05-23 15:13:53

设置self.text = "" 调用update()起作用了。 非常感谢艾伦斯!在

  • 我尝试在其他小部件上使用destroy(),但它似乎没有被“销毁”。相反,deleteLater()起作用了。它也适用于我制作的小工具。在

相关问题 更多 >