pyqt:如何将样式表应用于自定义窗口小部件

Ank*_*Pet 10 python pyqt pyqt4 qtstylesheets pyqt5

# -*- 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_())
Run Code Online (Sandbox Code Playgroud)

我想用样式表添加边框到自定义小部件,但样式表似乎不起作用,有什么不对吗?

ekh*_*oro 26

首先:在示例中添加一个实际的小部件:

    self.widget = QWidget(self)
    layout = QVBoxLayout(self)
    layout.addWidget(self.widget)
Run Code Online (Sandbox Code Playgroud)

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

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

注意:示例中的点选择器是多余的.它的作用是指定只QWidget选择自身的实例,而不是子类QWidget.请参阅Qt文档中的StyleSheet语法指南.


小智 8

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

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

mystylesheet.css

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

  • 使用 with open("mystylesheet.css", 'r') as file:sheet = file.read() anyQelement.setStyleSheet(sheet) 来确保文件正确关闭会更好吗? (3认同)