PyQt5 – 创建圆形按钮

  • Post category:Python

首先,将介绍Python中使用PyQt5创建圆形按钮的步骤。PyQt是一组用于创建基于Qt的Python应用程序的Python模块。该模块的一部分是QtGui模块,该模块用于创建图形用户界面、包括按钮。

步骤一:安装PyQt5

要使用PyQt5,您需要先安装它。您可以通过以下命令使用pip在命令行中安装它:

pip install PyQt5                   

步骤二:导入必要的库

在使用PyQt5之前,您需要先导入必要的库和类。在下面的示例中,我们将 PyQT5.QtWidgets 作为 QtWidgets 别名进行导入。

from PyQt5.QtWidgets import QPushButton, QWidget, QApplication
from PyQt5.QtGui import QPainter, QColor, QBrush
from PyQt5.QtCore import Qt

步骤三:创建一个具有“圆形”属性的按钮类

在下面的代码段中,我们创建了一个叫做 MyButton 的按钮类。注意,在 paintEvent 函数中,我们使用 QPainter 类来绘制圆形。我们还使用 QBrushQColor 类增加背景色和前景色。

class MyButton(QPushButton):
    def __init__(self, text, parent=None):
        super(MyButton, self).__init__(text, parent)
        self.setFixedSize(100, 100)

    def paintEvent(self, e):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setPen(Qt.NoPen)
        painter.setBrush(QBrush(QColor("#49A84E")))
        painter.drawEllipse(0, 0, 100, 100)
        painter.drawText(self.rect(), Qt.AlignCenter, self.text())

步骤四:创建按钮实例并运行应用程序

以下是代码段,它创建了一个按钮的实例,设置窗口的大小为 400x400

if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)
    w = QWidget()
    btn = MyButton('Click me!', w)
    btn.move(150, 150)
    w.setGeometry(100, 100, 400, 400)
    w.show()
    sys.exit(app.exec_())

示例1:创建一个带有“数字”圆形的按钮

下面的代码段将创建一个带有数字的圆形按钮:

class MyNumButton(MyButton):
    def __init__(self, num, parent=None):
        super(MyNumButton, self).__init__(str(num), parent)

    def paintEvent(self, e):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setPen(Qt.NoPen)
        painter.setBrush(QBrush(QColor("#FFD54E")))
        painter.drawEllipse(0, 0, 100, 100)
        painter.drawText(self.rect(), Qt.AlignCenter, self.text())

示例2:创建一个带有渐变填充的圆形按钮

以下代码段将创建一个带有渐变填充的圆形按钮:

class MyGradientButton(MyButton):
    def paintEvent(self, e):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setPen(Qt.NoPen)
        gradient = QConicalGradient(self.width()/2, self.height()/2, 0)
        gradient.setColorAt(0.0, QColor("#4A148C"))
        gradient.setColorAt(0.2, QColor("#7B1FA2"))
        gradient.setColorAt(0.5, QColor("#BA68C8"))
        gradient.setColorAt(0.8, QColor("#7B1FA2"))
        gradient.setColorAt(1.0, QColor("#4A148C"))
        painter.setBrush(QBrush(gradient))
        painter.drawEllipse(0, 0, 100, 100)
        painter.drawText(self.rect(), Qt.AlignCenter, self.text())

希望这些示例让您了解如何使用PyQt5创建圆形按钮。