如何在PyQt中为自定义组件应用样式表
# -*- 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_())
我想给一个自定义的小部件加个边框,用样式表来实现,但样式表好像不起作用,哪里出问题了呢?
2 个回答
12
在你的项目文件夹里添加一个基本的CSS文件,命名为mystylesheet.css。像Atom这样的多语言编辑器最适合处理这些文件。如果你把它命名为CSS文件,语法高亮功能会正常工作。
然后去掉那个点;qt会知道你在说什么。
mystylesheet.css
QWidget {
border: 20px solid black;
border-radius: 10px;
background-color: rgb(255, 255, 255);
}
anyQelement.setStyleSheet(open('mystylesheet.css').read())
37
首先:在你的例子中添加一个实际的组件:
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文档中的样式表语法指南。