我创建了一个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的新类替换这个类是可以的。它会更容易使用,但我做不到,所以我使用这个类。在
顺便说一句,抹掉所有已经画过的东西对我来说不是一个合适的解决方案,因为有很多文本,我只想删除一个。在
设置
self.text = ""
调用update()
起作用了。 非常感谢艾伦斯!在destroy()
,但它似乎没有被“销毁”。相反,deleteLater()
起作用了。它也适用于我制作的小工具。在相关问题 更多 >
编程相关推荐