最近需要为软件界面添加水印,通过多方查找资料,最终实现了利用在label中插入文字达到水印的效果。下面的代码是重写了class类:
#添加水印
class Label(QtWidgets.QLabel):
def __init__(self,parent=None):
QtWidgets.QLabel.__init__(self,parent)#使得label继承QLabel特性
self.setGeometry(QtCore.QRect(890,130,600,400))
self.setFrameShape(QtWidgets.QFrame.Box)
def paintEvent(self,event):
painter = QPainter(self)
# painter.begin(self) #如果注释会存在painter已激活的警报
painter.rotate(-30)
painter.translate(10,10)
self.drawText(event,painter)
# painter.end()
def drawText(self,event,painter):
painter.setPen(QColor(255,255,0,100))#z自带透明度
painter.setFont(QFont(QFont('Simsun',40)))
rect = QtCore.QRect(20,250,450,350)
painter.drawText(rect,2,'秋冬晚归客')
?由于是同一个类建立的对象,只要label的位置不同,即可使得每个水印位置不同,而修改水印的旋转和大小则是需要在类中进行修改。如果运行后无报错但无显示水印,则可能是文字在label外面,这时就需要改变label的大小,实际根据需求不断修改才行。
|