Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将样式表应用于PyQt中的自定义小部件_Python_Pyqt_Pyqt5_Pyqt4_Qtstylesheets - Fatal编程技术网

Python 如何将样式表应用于PyQt中的自定义小部件

Python 如何将样式表应用于PyQt中的自定义小部件,python,pyqt,pyqt5,pyqt4,qtstylesheets,Python,Pyqt,Pyqt5,Pyqt4,Qtstylesheets,我想用样式表为自定义小部件添加边框,但样式表似乎不起作用,有什么问题吗?首先:在示例中添加一个实际的小部件: # -*- coding: utf-8 -*- import sys from PyQt4.QtGui import * from PyQt4.QtCore import * class MainWindow(QWidget): def __init__(self): super(MainWindow, self).__init__()

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

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

# -*- 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_())
第二:帮自己一个忙,使用三重引号:

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

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

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

然后放下圆点;我知道你的意思

mystylesheet.css

QWidget{
边框:20px纯黑;
边界半径:10px;
背景色:rgb(255、255、255);
}
anyQelement.setStyleSheet(打开('mystylesheet.css').read())

你尝试删除QWIDGET之前的时间段吗?虽然你确实收到了一个似乎足够的答案,但是请考虑比“不按预期工作”更具体,通过说(甚至现在你的问题已经被回答)你具体预期了什么,哪些部分不起作用。下一次我会做得更好~不管出于什么原因,删除点选择器是让这项工作对我起作用的原因!将open(“mystylesheet.css”,“r”)用作file:sheet=file.read()anyQelement.setStyleSheet(sheet)以确保文件正确关闭是否更好?
    self.widget.setStyleSheet("""
        QWidget {
            border: 20px solid black;
            border-radius: 10px;
            background-color: rgb(255, 255, 255);
            }
        """)