【python】PyQt5中的QFrame控件,控制图形的边框样式、阴影效果、形状等属性
原创PyQt5中的QFrame控件:定制图形边框样式、阴影效果与形状属性
在PyQt5中,QFrame控件是一个基础的界面元素,通常用于作为容器来组织其他控件,或者作为自立的组件显示边框和背景。通过QFrame,我们可以很容易地控制图形的边框样式、阴影效果以及形状等属性,从而实现更加充裕和多样的界面设计。以下是怎样使用QFrame来实现这些效果的具体方法。
设置边框样式
QFrame提供了不同的边框样式,我们可以通过 setFrameStyle() 方法来设置。这个方法接受一个QFrame的样式常量,例如:
frame.setFrameStyle(QFrame.Box | QFrame.Plain)
以下是一些常用的边框样式常量:
- QFrame.NoFrame:无边框。
- QFrame.Box:方框边框。
- QFrame.Panel:面板边框。
- QFrame.WinPanel:Windows风格的面板边框。
控制阴影效果
为了给QFrame控件添加阴影效果,我们可以使用 setShadow() 方法,该方法同样接受一个QFrame的枚举值来指定阴影类型:
frame.setShadow(QFrame.Raised)
阴影效果的选项包括:
- QFrame.Plain:无阴影。
- QFrame.Raised:提升的阴影,看起来像是控件浮在表面上。
- QFrame.Sunken:下沉的阴影,看起来像是控件被压入表面下。
改变形状
QFrame的形状可以通过 setFrameShape() 方法来设置,它定义了控件的边角怎样显示。比如:
frame.setFrameShape(QFrame.StyledPanel)
以下是一些可用的形状选项:
- QFrame.NoFrame:无边框形状。
- QFrame.Box:矩形形状。
- QFrame.Panel:面板形状。
- QFrame.HLine/ QFrame.VLine:水平或垂直线形状。
综合示例
下面是一个单纯的示例,演示怎样创建一个带有边框样式、阴影效果和形状的QFrame:
import sys
from PyQt5.QtWidgets import QApplication, QFrame, QMainWindow, QVBoxLayout, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建一个QWidget作为中心窗口
central_widget = QWidget()
self.setCentralWidget(central_widget)
# 创建一个QVBoxLayout用于布局
layout = QVBoxLayout(central_widget)
# 创建QFrame
frame = QFrame()
frame.setFrameShape(QFrame.Box) # 设置形状
frame.setFrameShadow(QFrame.Raised) # 设置阴影效果
frame.setFrameStyle(QFrame.Panel | QFrame.Raised) # 设置边框样式
# 将QFrame添加到布局中
layout.addWidget(frame)
# 设置窗口属性
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('QFrame 示例')
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()
sys.exit(app.exec_())
在这个示例中,我们创建了一个QFrame控件,并设置了它的边框样式、阴影和形状。运行上述代码,你将看到一个自定义样式的QFrame控件。