PyQt5 – 如何制作一个带图片的按钮

  • Post category:Python

PyQt5是Python的一种GUI开发框架,可以用来开发在Windows、Linux和MacOS操作系统上的图形化界面应用程序。同时,PyQt5也提供了许多常用的UI组件,其中包括按钮。

本文将介绍如何使用PyQt5制作一个带图片的按钮。具体步骤如下:

步骤一:安装PyQt5

在使用PyQt5前,需要安装PyQt5模块。一般可以通过pip命令进行安装。

pip install PyQt5

步骤二:创建按钮

使用PyQt5,可以通过QPushButton类来创建按钮。以下是创建一个普通按钮的代码示例:

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtGui import QIcon
import sys

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        # 创建一个按钮
        btn = QPushButton("Button", self)
        btn.setToolTip('这是一个普通按钮') # 鼠标悬停在按钮上时显示的提示文字
        btn.move(50, 50)

        self.setWindowTitle('PyQt5 - Button')
        self.show()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

步骤三:添加图像

在创建按钮时,可以使用QIcon类为按钮添加图像。以下是创建一个带图像的按钮的代码示例:

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtGui import QIcon
import sys

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        # 创建一个按钮,并为其添加图像
        btn = QPushButton(self)
        btn.setToolTip('这是一个带图像的按钮')
        btn.setIcon(QIcon('icon.png')) # 图像路径
        btn.setIconSize(btn.sizeHint()) # 按钮大小
        btn.move(50, 50)

        self.setWindowTitle('PyQt5 - Button with Icon')
        self.setGeometry(300, 300, 300, 200)
        self.show()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

说明:icon.png是放在与python文件同一目录下的一张图片,程序会自动寻找这个图片。

示例1:带图像的普通按钮

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtGui import QIcon
import sys

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        # 创建一个按钮,并为其添加图像
        btn = QPushButton(self)
        btn.setToolTip('这是一个带图像的普通按钮')
        btn.setIcon(QIcon('icon.png')) # 图像路径
        btn.setIconSize(btn.sizeHint()) # 按钮大小
        btn.move(50, 50)

        self.setWindowTitle('PyQt5 - Icon Button')
        self.setGeometry(300, 300, 300, 200)
        self.show()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

说明:效果与步骤三相同,但是将按钮名称从“Button”改为了“Icon Button”,方便区分。

示例2:用QToolButton替换QPushButton

from PyQt5.QtWidgets import QApplication, QWidget, QToolButton
from PyQt5.QtGui import QIcon
import sys

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        # 创建一个工具按钮,并为其添加图像
        btn = QToolButton(self)
        btn.setToolTip('这是一个带图像的工具按钮')
        btn.setIcon(QIcon('icon.png')) # 图像路径
        btn.setIconSize(btn.sizeHint()) # 按钮大小
        btn.move(50, 50)

        self.setWindowTitle('PyQt5 - Tool Button')
        self.setGeometry(300, 300, 300, 200)
        self.show()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

说明:与步骤三的代码基本相同,只是将QPushButton替换为QToolButton,效果类似。QToolButton与QPushButton的区别是QToolButton会在按下时保持按下状态,并在鼠标悬停时显示提示。这些特性使得QToolButton更适合作为工具栏按钮。