Вы можете попробовать свойство font-weight
, значения 100-900 имеют различную толщину. Есть эквивалентный метод с QFont.setWeight()
.
class Template(QWidget):
def __init__(self):
super().__init__()
grid = QGridLayout(self)
grid.addWidget(QLabel('Hello World'), 0, 0, Qt.AlignHCenter)
for i in range(1, 10):
lbl = QLabel(f'({i * 100}) Hello World')
lbl.setStyleSheet(f'font-weight: {i * 100}')
grid.addWidget(lbl, i, 0)
self.setStyleSheet('''
QLabel {
font-size: 24pt;
font-family: Helvetica Neue;
}''')
Он выглядит так:
![enter image description here](https://i.stack.imgur.com/fg2pw.png)
Хотя это не будет работать для все шрифты. В качестве альтернативы вы можете создать подкласс QLabel и переопределить paintEvent
, чтобы нарисовать контур текста в цвете окна.
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class ThinLabel(QLabel):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def paintEvent(self, event):
qp = QPainter(self)
qp.setRenderHint(QPainter.Antialiasing)
path = QPainterPath()
path.addText(event.rect().bottomLeft(), self.font(), self.text())
qp.setPen(QPen(self.palette().color(QPalette.Window), 2))
qp.setBrush(self.palette().text())
qp.drawPath(path)
class Template(QWidget):
def __init__(self):
super().__init__()
grid = QGridLayout(self)
grid.addWidget(QLabel('Hello World'), 0, 0)
grid.addWidget(ThinLabel('Hello World'), 1, 0)
self.setStyleSheet('''
QLabel {
font-size: 80pt;
font-family: Helvetica Neue;
}''')
if __name__ == '__main__':
app = QApplication(sys.argv)
gui = Template()
gui.show()
sys.exit(app.exec_())
![enter image description here](https://i.stack.imgur.com/lItfP.png)