Возможно ли сделать обводку текста QLabel?
Как сделать обводку всего текста используя QLabel?
class Window2(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Window2, self).__init__(parent)
self.setWindowFlags(QtCore.Qt.Window)
font = QtGui.QFont()
font.setPixelSize(50)
background = QtGui.QImage("balloons.jpg").scaled(900, 900)
palette = QtGui.QPalette()
palette.setBrush(10, QtGui.QBrush(background))
self.setPalette(palette)
label = QtWidgets.QLabel("Label 2", alignment = QtCore.Qt.AlignCenter)
label.setFrameStyle(QtWidgets.QFrame.Box | QtWidgets.QFrame.Raised)
label.setStyleSheet("background-color: rgba(255,255,255,20%); color: #FFFFFF;")
label.setFont(font)
layout = QtWidgets.QVBoxLayout()
layout.addWidget(label)
self.setLayout(layout)
Ответы (2 шт):
Автор решения: Sergei Ozerov
→ Ссылка
Используя QLabel и Python - насколько я могу судить никак. Оно просто не предназначено для этого. Но Вашу задачу можно решить используя QGraphicsScene куда можно добавить и картинку и QGraphicsSimpleTextItem; последний поддерживает обводку.
Автор решения: S. Nick
→ Ссылка
Эффект тени QGraphicsDropShadowEffect может выглядеть так:
import sys
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtWidgets import QGraphicsDropShadowEffect
class Window2(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Window2, self).__init__(parent)
self.setWindowFlags(QtCore.Qt.Window)
background = QtGui.QImage("background.png").scaled(900, 900) # balloons.jpg
palette = QtGui.QPalette()
palette.setBrush(10, QtGui.QBrush(background))
self.setPalette(palette)
label = QtWidgets.QLabel("Label 2", alignment = QtCore.Qt.AlignCenter)
label.setFrameStyle(QtWidgets.QFrame.Box | QtWidgets.QFrame.Raised)
# label.setStyleSheet("background-color: rgba(255, 255, 255, 20%); color: #FFFFFF;")
label.setStyleSheet("background-color: rgba(255, 255, 255, 20); margin: 50px;")
font = QtGui.QFont()
font.setPixelSize(50)
label.setFont(font)
shadow = QtWidgets.QGraphicsDropShadowEffect(self,
blurRadius=14.0,
color=QtGui.QColor("#f00"),
offset=QtCore.QPointF(0.0, 0.0)
)
label.setGraphicsEffect(shadow)
layout = QtWidgets.QVBoxLayout()
layout.addWidget(label)
self.setLayout(layout)
if __name__ == '__main__':
application = QtWidgets.QApplication([])
window = Window2()
window.resize(900, 600)
window.show()
sys.exit(application.exec_())

