【问题标题】:How to apply style sheet to a custom widget in PyQt如何将样式表应用于 PyQt 中的自定义小部件
【发布时间】:2014-04-25 14:42:35
【问题描述】:
# -*- coding: utf-8 -*-

import sys
from PyQt4.QtGui import *  
from PyQt4.QtCore import * 

class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.setFixedWidth(200)
        self.setFixedHeight(200)

        stylesheet = \
            ".QWidget {\n" \
            + "border: 20px solid black;\n" \
            + "border-radius: 4px;\n" \
            + "background-color: rgb(255, 255, 255);\n" \
            + "}"
        self.setStyleSheet(stylesheet)

if __name__ == '__main__':

    app = QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())

我想给带有样式表的自定义小部件添加边框,但是样式表似乎不起作用,有什么问题吗?

【问题讨论】:

  • 你试过去掉QWidget之前的句号吗?
  • 虽然您确实收到了一个似乎足够的答案,但请考虑比“没有按预期工作”更具体,通过说(即使现在您的问题已得到回答)您具体期望什么并且其中哪一部分不起作用。
  • 好的,下次我会做得更好的~

标签: python pyqt pyqt5 pyqt4 qtstylesheets


【解决方案1】:

首先:为您的示例添加一个实际的小部件:

    self.widget = QWidget(self)
    layout = QVBoxLayout(self)
    layout.addWidget(self.widget)

其次:帮自己一个忙,并使用三引号:

    self.widget.setStyleSheet("""
        QWidget {
            border: 20px solid black;
            border-radius: 10px;
            background-color: rgb(255, 255, 255);
            }
        """)

您的示例中的点选择器是多余的。它的作用是指定只选择QWidget 本身的实例,而不是QWidget 的子类。请参阅 Qt 文档中的 StyleSheet Syntax 指南。

【讨论】:

  • 无论出于何种原因,删除点选择器是使这项工作对我有用的区别!
【解决方案2】:

在您的项目文件夹中添加一个基本的 CSS 文件 mystylesheet.css。像 Atom 这样的多语言编辑器最适合这类事情。如果您将其命名为 CSS 文件,则语法突出显示可以正常工作。

然后放下点; qt 知道你的意思。

我的样式表.css

QWidget {
    border: 20px solid black;
    border-radius: 10px;
    background-color: rgb(255, 255, 255);
}
anyQelement.setStyleSheet(open('mystylesheet.css').read())

【讨论】:

  • 最好使用 open("mystylesheet.css", 'r') as file: sheet = file.read() anyQelement.setStyleSheet(sheet) 以确保文件正确关闭?
猜你喜欢
  • 2015-06-12
  • 2011-11-08
  • 1970-01-01
  • 2012-12-27
  • 2010-12-09
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 2019-10-18
相关资源
最近更新 更多