自定义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