当前位置:首页 > 行业动态 > 正文

pyqt 胶囊按钮

PyQt是一个用于创建桌面应用程序的Python库,它提供了一套丰富的图形界面组件,包括按钮、文本框、标签等,胶囊按钮(Capsule Button)是PyQt中的一种特殊类型的按钮,它具有圆角矩形的形状和平滑的外观,在本教程中,我们将学习如何使用PyQt5创建一个胶囊按钮。

pyqt 胶囊按钮  第1张

确保已经安装了PyQt5库,如果没有安装,可以使用以下命令进行安装:

pip install PyQt5

接下来,我们将创建一个简单的PyQt5应用程序,其中包含一个胶囊按钮,以下是完整的代码:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
from PyQt5.QtCore import QSize
from PyQt5.QtGui import QPainter, QColor, QBrush, QPen
class CapsuleButton(QPushButton):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setMinimumSize(QSize(100, 40))
        self.setMaximumSize(QSize(100, 40))
        self.setStyleSheet("border: none;")
        self.setCursor(Qt.PointingHandCursor)
        self.setFocusPolicy(Qt.NoFocus)
        self.hovered = False
    def enterEvent(self, event):
        self.hovered = True
        self.update()
    def leaveEvent(self, event):
        self.hovered = False
        self.update()
    def paintEvent(self, event):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setBrush(QBrush(QColor(255, 255, 255)))
        painter.setPen(QPen(QColor(238, 238, 238), 2))
        painter.drawRoundedRect(0, 0, self.width(), self.height(), 10, 10)
        if self.hovered:
            painter.setBrush(QBrush(QColor(240, 240, 240)))
            painter.drawRoundedRect(2, 2, self.width() 4, self.height() 4, 8, 8)
        painter.end()
class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        layout = QVBoxLayout()
        self.capsule_button = CapsuleButton("点击我")
        layout.addWidget(self.capsule_button)
        self.setLayout(layout)
        self.setWindowTitle("胶囊按钮示例")
        self.show()
if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWin = MainWindow()
    sys.exit(app.exec_())

在这个示例中,我们首先导入了所需的库,并定义了一个名为CapsuleButton的新类,该类继承自QPushButton,在CapsuleButton类的构造函数中,我们设置了按钮的最小和最大尺寸,并移除了边框,我们还设置了鼠标光标和焦点策略,以便在用户与按钮交互时提供更好的视觉效果。

接下来,我们重写了enterEvent和leaveEvent方法,以便在鼠标进入和离开按钮时改变按钮的外观,我们还重写了paintEvent方法,以绘制胶囊按钮的圆角矩形形状,在这个方法中,我们使用QPainter对象来绘制按钮的背景和边框,当鼠标悬停在按钮上时,我们会改变按钮的背景颜色。

我们创建了一个名为MainWindow的新类,该类继承自QWidget,在这个类的构造函数中,我们初始化了用户界面,并将胶囊按钮添加到布局中,我们还设置了窗口的标题,并显示了窗口。

要运行这个示例,只需将代码保存到一个名为capsule_button_example.py的文件中,并在命令行中运行以下命令:

python capsule_button_example.py

运行后,你将看到一个包含胶囊按钮的简单窗口,当你将鼠标悬停在按钮上时,按钮的背景颜色会发生变化,这就是如何使用PyQt5创建一个胶囊按钮的方法,希望这个教程对你有所帮助!

0