Я хочу установить font-weight для QLabel равным 200 (светлый), и для этого я попробовал QSS и Rich Text.
1. QSS
Я попытался использовать QSS, чтобы установить семейство шрифтов и font-weight для qlabel, но текст остался с нормальным font-weight (т.е. 400), однако вес отвечал, как ожидалось, когда font-weight был выше 400.
Здесь вы можете увидеть, что Font-weight 200
and Font-weight 400 has no difference:
whereas Font-weight 500 seems to produce result as expected:
Code:
import sys
from PyQt5 import QtWidgets as qtw
from PyQt5 import QtGui as qtg
from PyQt5 import QtCore as qtc
class MainWindow(qtw.QMainWindow):
def __init__(self):
super().__init__()
# Main UI code goes here
stsheet2 = '''
#label{
font-family: Segoe UI;
font-size: 22pt;
color: #525856;
font-weight: 200;
}
'''
# Set window related properties
self.setStyleSheet(stsheet2)
self.label = qtw.QLabel("Sample Text")
self.label.setObjectName("label")
self.baseWidget = qtw.QWidget(self)
self.baseLayout = qtw.QHBoxLayout()
self.baseWidget.setLayout(self.baseLayout)
self.setCentralWidget(self.baseWidget)
self.baseLayout.addWidget(self.label)
self.show()
if __name__ == '__main__':
app = qtw.QApplication(sys.argv)
mw = MainWindow()
sys.exit(app.exec())
2. Rich Text
Another approach i used was Rich Text. This technique worked and produced light text when i added normal qlabel to the layout before the qlabel with rich text but not other way around:
Code:
import sys
from PyQt5 import QtWidgets as qtw
from PyQt5 import QtGui as qtg
from PyQt5 import QtCore as qtc
class MainWindow(qtw.QMainWindow):
def __init__(self):
super().__init__()
# Main UI code goes here
self.label = qtw.QLabel("Sample Text")
self.label2 = qtw.QLabel(" Sample Text 2") self.baseWidget = qtw.QWidget (self) self.baseLayout = qtw .QHBoxLayout () self.baseWidget.setLayout (self.baseLayout) self.setCentralWidget (self.baseWidget) self.baseLayout.addWidget (self.label) self.baseLayout.addWidget (self.label2) self.show () if __name__ = = '__main__': app = qtw.QApplication (sys.argv) mw = MainWindow () sys.exit (app.exe c ())
Rich Text успешно производит ожидаемый результат при нормальном QLabel добавлен в макет перед форматированный текст.
import sys
from PyQt5 import QtWidgets as qtw
from PyQt5 import QtGui as qtg
from PyQt5 import QtCore as qtc
class MainWindow(qtw.QMainWindow):
def __init__(self):
super().__init__()
# Main UI code goes here
self.label = qtw.QLabel("Sample Text")
self.label2 = qtw.QLabel(" Пример текста 2") self.baseWidget = qtw.QWidget (self) self.baseLayout = qtw.QHBoxLayout ( ) self.baseWidget.setLayout (self.baseLayout) self.setCentralWidget (self.baseWidget) self.baseLayout.addW idget (self.label2) # Обратите внимание на изменение self.baseLayout.addWidget (self.label) self.show () if __name__ == '__main__': app = qtw.QApplication (sys.argv) mw = MainWindow () sys. exit (app.exe c ())
Rich Text не дает ожидаемого результата, когда обычный QLabel добавлен в макет после RTF.
Поведение QSS и Rich Text меня очень сбивает с толку. Может кто-нибудь объяснить, почему форматированный текст ведет себя таким образом, почему QSS, похоже, не может установить font-weight ниже 400 и, наконец, как выполнить относительно простую задачу установки font-weight на 200 (light).
- PyQt5 версии 5.12
- Win 10 x64