设置fontweight时QLabel中QSS和富文本的奇怪行为

2024-10-03 00:19:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将QLabel的字体重量设置为200(轻),为此我尝试了QSS和富文本

一,。QSS

我尝试使用QSS设置qlabel的字体系列和字体重量,但文本仍保持正常字体重量(即400),但当字体重量大于400时,重量响应与预期一致

你可以在这里看到字体的重量是200

字体重量400没有区别:

而字体权重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())

二,。富文本

我使用的另一种方法是富文本。当我将普通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添加到版面之前的时,富文本成功生成预期输出

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和富文本的行为让我非常困惑。有人能解释一下为什么富文本会这样,为什么QSS似乎无法将字体重量设置在400以下,最后,如何实现将字体重量设置为200(轻)的相对简单的任务

  • PyQt5版本5.12
  • 赢10 x64

Tags: from文本importselfassys字体label
1条回答
网友
1楼 · 发布于 2024-10-03 00:19:21

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

相关问题 更多 >