自定义QWidget的QSS样式
This commit is contained in:
parent
70f0ad10c5
commit
e55e46b77c
7 changed files with 129 additions and 0 deletions
34
自定义QWidget的QSS样式/CustomPaintWidget.py
Normal file
34
自定义QWidget的QSS样式/CustomPaintWidget.py
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
'''
|
||||||
|
Created on 2017年12月10日
|
||||||
|
@author: Irony."[讽刺]
|
||||||
|
@site: http://alyl.vip, http://orzorz.vip, https://coding.net/u/892768447, https://github.com/892768447
|
||||||
|
@email: 892768447@qq.com
|
||||||
|
@file: CustomPaintWidget
|
||||||
|
@description:
|
||||||
|
'''
|
||||||
|
from PyQt5.QtGui import QPainter
|
||||||
|
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QStyleOption, QStyle
|
||||||
|
|
||||||
|
|
||||||
|
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
|
||||||
|
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
|
||||||
|
__Version__ = "Version 1.0"
|
||||||
|
|
||||||
|
|
||||||
|
class CustomPaintWidget(QWidget):
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(CustomPaintWidget, self).__init__(*args, **kwargs)
|
||||||
|
layout = QVBoxLayout(self)
|
||||||
|
layout.addWidget(QLabel("我是自定义CustomPaintWidget", self))
|
||||||
|
|
||||||
|
def paintEvent(self, event):
|
||||||
|
# 解决QSS问题
|
||||||
|
option = QStyleOption()
|
||||||
|
option.initFrom(self)
|
||||||
|
painter = QPainter(self)
|
||||||
|
self.style().drawPrimitive(QStyle.PE_Widget, option, painter, self)
|
||||||
|
super(CustomPaintWidget, self).paintEvent(event)
|
25
自定义QWidget的QSS样式/CustomWidget.py
Normal file
25
自定义QWidget的QSS样式/CustomWidget.py
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
'''
|
||||||
|
Created on 2017年12月10日
|
||||||
|
@author: Irony."[讽刺]
|
||||||
|
@site: http://alyl.vip, http://orzorz.vip, https://coding.net/u/892768447, https://github.com/892768447
|
||||||
|
@email: 892768447@qq.com
|
||||||
|
@file: CustomWidget
|
||||||
|
@description:
|
||||||
|
'''
|
||||||
|
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel
|
||||||
|
|
||||||
|
|
||||||
|
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
|
||||||
|
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
|
||||||
|
__Version__ = "Version 1.0"
|
||||||
|
|
||||||
|
|
||||||
|
class CustomWidget(QWidget):
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(CustomWidget, self).__init__(*args, **kwargs)
|
||||||
|
layout = QVBoxLayout(self)
|
||||||
|
layout.addWidget(QLabel("我是自定义CustomWidget", self))
|
9
自定义QWidget的QSS样式/README.md
Normal file
9
自定义QWidget的QSS样式/README.md
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# 自定QWidget 设置QSS样式
|
||||||
|
由于自定义QWidget 会导致QSS无效
|
||||||
|
这里通过两个方法来实现
|
||||||
|
|
||||||
|
1.重写paintEvent
|
||||||
|
2.设置Qt.WA_StyledBackground属性
|
||||||
|
|
||||||
|
# 截图
|
||||||
|
<img src="ScreenShot/1.png" />
|
BIN
自定义QWidget的QSS样式/ScreenShot/1.png
Normal file
BIN
自定义QWidget的QSS样式/ScreenShot/1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
BIN
自定义QWidget的QSS样式/__pycache__/CustomPaintWidget.cpython-35.pyc
Normal file
BIN
自定义QWidget的QSS样式/__pycache__/CustomPaintWidget.cpython-35.pyc
Normal file
Binary file not shown.
BIN
自定义QWidget的QSS样式/__pycache__/CustomWidget.cpython-35.pyc
Normal file
BIN
自定义QWidget的QSS样式/__pycache__/CustomWidget.cpython-35.pyc
Normal file
Binary file not shown.
61
自定义QWidget的QSS样式/test.py
Normal file
61
自定义QWidget的QSS样式/test.py
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
'''
|
||||||
|
Created on 2017年12月10日
|
||||||
|
@author: Irony."[讽刺]
|
||||||
|
@site: http://alyl.vip, http://orzorz.vip, https://coding.net/u/892768447, https://github.com/892768447
|
||||||
|
@email: 892768447@qq.com
|
||||||
|
@file: test
|
||||||
|
@description:
|
||||||
|
'''
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from PyQt5.QtCore import Qt
|
||||||
|
from PyQt5.QtWidgets import QWidget, QApplication, QHBoxLayout
|
||||||
|
|
||||||
|
from CustomPaintWidget import CustomPaintWidget # @UnresolvedImport
|
||||||
|
from CustomWidget import CustomWidget # @UnresolvedImport
|
||||||
|
|
||||||
|
|
||||||
|
__Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
|
||||||
|
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
|
||||||
|
__Version__ = "Version 1.0"
|
||||||
|
|
||||||
|
|
||||||
|
class TestWidget(QWidget):
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(TestWidget, self).__init__(*args, **kwargs)
|
||||||
|
layout = QHBoxLayout(self)
|
||||||
|
layout.addWidget(CustomPaintWidget(self))
|
||||||
|
layout.addWidget(CustomWidget(self))
|
||||||
|
#注意
|
||||||
|
w = CustomWidget(self)
|
||||||
|
w.setAttribute(Qt.WA_StyledBackground)#很重要
|
||||||
|
layout.addWidget(w)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app = QApplication(sys.argv)
|
||||||
|
app.setStyleSheet('''
|
||||||
|
CustomPaintWidget {
|
||||||
|
min-width: 100px;
|
||||||
|
min-height: 100px;
|
||||||
|
border: 1px solid green;
|
||||||
|
border-radius: 20px;
|
||||||
|
background: green;
|
||||||
|
}
|
||||||
|
CustomWidget {
|
||||||
|
min-width: 200px;
|
||||||
|
min-height: 200px;
|
||||||
|
max-width: 200px;
|
||||||
|
max-height: 200px;
|
||||||
|
border: 1px solid orange;
|
||||||
|
border-radius: 100px;
|
||||||
|
background: orange;
|
||||||
|
}
|
||||||
|
''')
|
||||||
|
w = TestWidget()
|
||||||
|
w.show()
|
||||||
|
sys.exit(app.exec_())
|
Loading…
Reference in a new issue