PyQt5 中设置窗体和控件的透明度非常简单。我们可以通过设置控件或窗体的透明度值来实现该功能。
PyQt5 中设置窗体和控件的透明度非常简单。我们可以通过设置控件或窗体的透明度值来实现该功能。
以下是实现这一功能的步骤:
步骤 1:导入必要的库
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QPushButton
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtCore import Qt
步骤 2:创建窗体
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 350, 250)
self.setWindowTitle('透明度设置')
self.setWindowOpacity(0.6)
btn = QPushButton('退出', self)
btn.clicked.connect(QApplication.instance().quit)
btn.resize(btn.sizeHint())
btn.move(50, 50)
self.show()
我们首先创建了一个 QWidget
类。在 initUI
方法中,调用了我们定义的 setWindowOpacity
方法,该方法用于设置窗体的透明度。我们将窗体的透明度设置为 0.6
。
接下来,在窗体中,我们创建了一个按钮,点击该按钮会退出应用程序。
步骤 3:绘制透明控件
可以通过重载 paintEvent
方法并在该方法中设置透明度值来实现绘制透明控件的功能。
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 350, 250)
self.setWindowTitle('透明度设置')
self.setWindowOpacity(0.6)
self.show()
def paintEvent(self, event):
qp = QPainter()
qp.begin(self)
self.drawRectangles(qp)
qp.end()
def drawRectangles(self, qp):
col = QColor(0, 0, 0)
col.setNamedColor('#d4d4d4')
qp.setPen(col)
qp.setBrush(QColor(200, 0, 0, 50))
qp.drawRect(10, 15, 90, 60)
qp.setBrush(QColor(255, 80, 0, 160))
qp.drawRect(130, 15, 90, 60)
qp.setBrush(QColor(25, 0, 90, 200))
qp.drawRect(250, 15, 90, 60)
我们在 initUI
方法中只是绘制了窗体。实际上,我们需要重载 paintEvent
方法来处理绘制透明控件的逻辑。
在 paintEvent
方法中,我们使用 QPainter
类来绘制透明控件。在 drawRectangles
方法中,我们绘制了三个不同的矩形。
我们将每个矩形的透明度设置为不同的值。与窗体透明度一样,我们可以通过将颜色的最后一位设置为透明度值来设置矩形的透明度。
例如,下面的代码设置了一个透明度为 50
的红色矩形:
qp.setBrush(QColor(200, 0, 0, 50))
qp.drawRect(10, 15, 90, 60)
示例 1:控件透明度随窗体透明度变化
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 350, 250)
self.setWindowTitle('透明度设置')
self.setWindowOpacity(0.6)
btn = QPushButton('退出', self)
btn.clicked.connect(QApplication.instance().quit)
btn.resize(btn.sizeHint())
btn.move(50, 50)
self.show()
def paintEvent(self, event):
qp = QPainter()
qp.begin(self)
self.drawRectangles(qp)
qp.end()
def drawRectangles(self, qp):
col = QColor(0, 0, 0)
col.setNamedColor('#d4d4d4')
qp.setPen(col)
rect1 = QRect(10, 15, 90, 60)
rect2 = QRect(130, 15, 90, 60)
rect3 = QRect(250, 15, 90, 60)
self.drawRectangle(qp, rect1)
self.drawRectangle(qp, rect2)
self.drawRectangle(qp, rect3)
def drawRectangle(self, qp, rect):
color = QColor(200, 0, 0, int(self.windowOpacity() * 255))
qp.setBrush(color)
qp.drawRect(rect)
在上面的示例中,我们重载了 drawRectangle
方法,并使用窗体透明度乘以 255
来计算控件的透明度。
示例 2:使用 Slider 来控制透明度
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 350, 250)
self.setWindowTitle('透明度设置')
self.slider = QSlider(Qt.Horizontal, self)
self.slider.setFocusPolicy(Qt.NoFocus)
self.slider.setGeometry(30, 40, 100, 30)
self.slider.valueChanged[int].connect(self.changeOpacity)
self.show()
def changeOpacity(self, value):
self.setWindowOpacity(value/100)
在这个示例中,我们创建了一个 QSlider
控件来控制窗体的透明度。我们将 slider
对象的 valueChanged
信号连接到 changeOpacity
方法上。
在 changeOpacity
方法中,我们将 slider
的当前值除以 100
以获取透明度值,并将其用于设置窗体的透明度。
通过这两个示例,我们可以了解如何实现控件的透明度和窗体的透明度设置。
本文标题为:pyqt5 设置窗体透明控件不透明的操作
- js登录滑动验证的实现(不滑动无法登陆) 2023-12-26
- javascript window.opener的用法分析 2024-01-16
- 探讨vertical-align应用 2022-10-16
- vue中的条件渲染 v-show、v-if、v-else、v-else-if 2023-10-08
- 8条非常实用的设计字体规则详解 2024-02-05
- JS sort排序详细使用方法示例解析 2023-11-30
- css 控制鼠标显示样式示例 2024-01-05
- 使用React.forwardRef传递泛型参数 2023-07-09
- 第7天:CSS入门 2022-11-04
- css中text-overflow属性与文本截断详解 2024-02-19