首页 > 解决方案 > 如何在QLabel中单独设置文本占用区域的背景颜色?

问题描述

如何在 QLabel 中仅设置文本占用区域的背景颜色?

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class myList(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Frame Example")
        self.myui()

    def myui(self):

        self.textbox = QLineEdit()
        self.label_head = QLabel("Company Name")
        self.textbox.setFixedSize(400,30)
        self.label_head.setFont(QFont("caliber",12,QFont.Bold))
        self.label_head.setAlignment(Qt.AlignCenter)
        self.label_head.setStyleSheet("background-color:red;border-radius:5px;padding:2px;")
        self.label_head.adjustSize()
        self.label_head.setAutoFillBackground(True)

        vbox = QVBoxLayout()
        vbox.addWidget(self.label_head)
        vbox.addWidget(self.textbox)
        self.setLayout(vbox)

def main():
    myapp = QApplication(sys.argv)
    mywin = myList()
    mywin.show()
    sys.exit(myapp.exec_())

if __name__ == '__main__':
    main()

在这段代码中,我只需要文本区域的背景颜色(“公司名称”)。

标签: pythonpyqt5

解决方案


尝试一下

self.label_head = QLabel("<span style='color: #fff; background-color: #00f'>Company Name</span>")

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class myList(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Frame Example")
        self.myui()

    def myui(self):

        self.textbox = QLineEdit()

        self.label_head = QLabel("<span style='color: #fff; background-color: #00f'>Company Name</span>") # <---

        self.textbox.setFixedSize(400,30)
        self.label_head.setFont(QFont("caliber",12,QFont.Bold))
        self.label_head.setAlignment(Qt.AlignCenter)
        self.label_head.setStyleSheet("background-color:red;border-radius:5px;padding:2px;")
        self.label_head.adjustSize()
        self.label_head.setAutoFillBackground(True)

        vbox = QVBoxLayout()
        vbox.addWidget(self.label_head)
        vbox.addWidget(self.textbox)
        self.setLayout(vbox)

def main():
    myapp = QApplication(sys.argv)
    mywin = myList()
    mywin.show()
    sys.exit(myapp.exec_())

if __name__ == '__main__':
    main()

在此处输入图像描述


推荐阅读