设置字体粗细

时间:2020-05-06 18:11:20

标签: python pyqt pyqt5 qtstylesheets qlabel

我想将QLabel的字体粗细设置为200(light),为此,我尝试了QSS和Rich Text。

1。 QSS

我试图使用QSS为qlabel设置字体系列和字体粗细,但是文本仍保持为正常字体粗细(即400),但是当字体粗细高于400时,粗细按照预期响应。 / p>

您可以在此处看到Font-weight 200

和字体粗细400没有区别:

Font-weight 500似乎产生了预期的结果:

代码:

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。当我在带有丰富文本的qlabel之前的布局中添加普通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("<span style=\"color: #525856; font-family: segoe ui; font-size:22pt; font-weight:200;\">Sample Text 2</span>")

        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.exec())

在将普通QLabel添加到版面 之前,Rich Text成功产生预期的输出。

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("<span style=\"color: #525856; font-family: segoe ui; font-size:22pt; font-weight:200;\">Sample Text 2</span>")

        self.baseWidget = qtw.QWidget(self)
        self.baseLayout = qtw.QHBoxLayout()
        self.baseWidget.setLayout(self.baseLayout)
        self.setCentralWidget(self.baseWidget)

        self.baseLayout.addWidget(self.label2)    # Notice the change
        self.baseLayout.addWidget(self.label)

        self.show()

if __name__ == '__main__':
    app = qtw.QApplication(sys.argv)
    mw = MainWindow()
    sys.exit(app.exec())
当将普通QLabel添加到版面 后,

富文本无法提供预期的输出。

QSS和RTF的行为都令我感到困惑。有人可以解释为什么富文本格式会这样,为什么QSS似乎无法将字体粗细设置为400以下,最后是如何实现将字体粗细设置为200(light)的相对简单的任务。

  • PyQt5版本5.12
  • 赢得10 x64

1 个答案:

答案 0 :(得分:0)

作为一种解决方法,我初始化了一个额外的空QLabel对象,然后将其添加到基本布局中,然后添加其他小部件。这有助于实现预期的行为,但我仍然不知道为什么首先会出现问题。