【PyQt】集中式样式表(QSS文件)管理界面样式

news/2025/2/9 8:43:08 标签: pyqt, python

集中式样式表(QSS文件)管理界面样式

集中式样式表(通常使用QSS,Qt StyleSheet)是一种非常有效的方式来管理和定制你的PyQt应用程序的界面样式。类似于Web开发中的CSS,QSS允许你以声明式的方式定义组件的外观,而无需在代码中逐一设置每个组件的属性。

步骤 1: 创建 QSS 文件

首先,创建一个 .qss 文件,例如 styles.qss,并在其中定义你的样式规则。以下是一个简单的例子:

/* styles.qss */
QPushButton {
    background-color: #4CAF50; /* Green */
    color: white;
    border: none;
    padding: 10px 20px;
    text-align: center;
    font-size: 16px;
}

QLineEdit {
    background-color: #f0f0f0;
    border: 2px solid #ccc;
    border-radius: 4px;
    padding: 5px;
}

QMainWindow {
    background-color: #E0E0E0;
}

步骤 2: 加载并应用 QSS 文件

接下来,在你的 PyQt 应用程序中加载这个 .qss 文件,并将其应用于整个应用程序或特定的部件。以下是实现这一过程的示例代码:

python">import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QLineEdit
from PyQt5.QtCore import QFile, QTextStream

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("QSS 样式表示例")
        self.setGeometry(100, 100, 400, 300)

        layout = QVBoxLayout()

        button = QPushButton("点击我", self)
        lineEdit = QLineEdit(self)

        layout.addWidget(button)
        layout.addWidget(lineEdit)

        container = QWidget()
        container.setLayout(layout)
        self.setCentralWidget(container)

        # 加载外部样式表
        styleFile = "styles.qss"
        with open(styleFile, "r") as f:
            qss = f.read()
            app.setStyleSheet(qss)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

效果展示

1.未使用(QSS文件)管理界面样式

在这里插入图片描述

2.使用(QSS文件)管理界面样式

在这里插入图片描述

python">        styleFile = "styles.qss"
        with open(styleFile, "r") as f:
            qss = f.read()
            app.setStyleSheet(qss)

注意事项

  • 路径问题:确保你的 .qss 文件路径是正确的。如果样式表文件不在同一目录下,你需要提供完整的相对或绝对路径。
  • 性能考虑:对于大型应用程序,频繁地修改全局样式可能会影响性能。尽量减少对 app.setStyleSheet() 的调用次数。
  • 优先级:QSS 的选择器优先级与 CSS 类似。如果需要覆盖默认样式或其它样式,请注意选择器的特异性。

通过这种方式,你可以轻松地维护和更新你的应用程序样式,同时保持代码清晰和易于管理。如果你有多个不同的主题或者想要动态切换样式,只需加载不同的 .qss 文件即可。


http://www.niftyadmin.cn/n/5845857.html

相关文章

android设置添加设备QR码信息

摘要:客户衍生需求,通过扫QR码快速获取设备基础信息,并且基于POS SDK进行打印。 1. 定位至device info的xml添加相关perference Index: vendor/mediatek/proprietary/packages/apps/MtkSettings/res/xml/my_device_info.xml--- vendor/medi…

Linux strace命令介绍

📊 strace 命令详解 🚀 1. 什么是 strace? strace(System Trace)是 Linux 下的一个强大调试工具,用于跟踪和诊断程序与内核之间的交互。它可以捕获程序执行过程中发出的 系统调用(System Calls…

TensorFlow 示例平方米转亩(二)

一 训练结果 二 完整代码 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt from tensorflow.keras.callbacks import EarlyStopping# 中文字体设置 plt.rcParams[font.sans-serif] [Microsoft YaHei] plt.rcParams[axes.unicode_minus] Fals…

wordpressAI工具,已接入Deepseek 支持自动生成文章、生成图片、生成长尾关键词、前端AI窗口互动、批量采集等

基于关键词或现有内容生成SEO优化的文章,支持多种AI服务(如OpenAI、百度文心一言、智谱AI等),并提供定时任务、内容采集、关键词生成等功能。 核心功能 文章生成 关键词生成:根据输入的关键词生成高质量文章。 内容…

mysql8安装时提示-缺少Microsoft Visual C++ 2019 x64 redistributable

MySQL8.0安装包mysql-8.0.1-winx64进行安装,提示:This application requires Visual Studio 2019 x64Redistributable, Please install the Redistributable then runthis installer again。出现这个错误是因为我们电脑缺少Microsoft Visual C 这个程序&…

BiGRU双向门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据)

代码地址:BiGRU双向门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据) BiGRU双向门控循环单元多变量多步预测,光伏功率预测 一、引言 1.1、研究背景和意义 随着全球对可再生能源需求的不断增长,光伏…

分割回文串(力扣131)

这道题咋一看与之前做过的组合问题不相干,实际上仍然需要用上组合问题的模版。分割操作其实就是组合问题里的递归子集并挑选数字。举个例子:我们有一个字符串1,2,3,4,组合问题中我们先在最开始的集合中选择1,然后递归子集2,3,4,这…

kafka生产端之架构及工作原理

文章目录 整体架构元数据更新 整体架构 消息在真正发往Kafka之前,有可能需要经历拦截器(Interceptor)、序列化器(Serializer)和分区器(Partitioner)等一系列的作用,那么在此之后又会…