我创建了一个继承QWidget的Roatatable Text类,它运行正常。
但是,当我试图删除此文本时
label.destroy()
,
它并没有消失。
我尝试使用QPainter.eraseRect()
,将painter
更改为self.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。它会更容易使用但我没能成功,所以我正在使用这个类。
P.S。只删除已绘制的所有内容对我来说都不合适,因为有很多文本而且我只想删除一个。
答案 0 :(得分:0)
设置self.text = ""
并致电update()
。
非常感谢eyllanesc!
destroy()
,但它似乎没有被“破坏”。相反,deleteLater()
起作用了。它也适用于我制作的小部件。