在用Python(PyQt5)做图形界面开发时,如果我们要手动实现一个带有刷新图标的按钮时,那么就要用到在按钮上添加图片的功能,下面将直接介绍实现方法:
方法一、为按钮添加样式setStyleSheet
- 设置background-image
button = QPushButton()
img_path = '' # 图片路径
button.setStyleSheet("QPushButton{\n"
"background-image: url(\"%s\");\n"
"background-position:center;\n"
"background-repeat:no-repeat;\n"
"}" % img_path)
# background-image: url(\"%s\") 为设置的图片路径
# background-position:center 设置图片位置
# background-repeat:no-repeat 设置图片不重复
注意:该方式需要将图片大小预先调整好,因为background-image不会去自适应按钮大小
- 设置border-image
button = QPushButton()
img_path = '' # 图片路径
button.setStyleSheet("QPushButton{\n"
"border-image: url(\"%s\");\n"
"}" % img_path)
# border-image: url(\"%s\") 为设置的图片路径
该方法可以将图片直接自适应按钮大小,不需要调整图片,方便简洁。(但我在Mac上使用该方法时,点击按钮没有按钮动作,可以触发事件,问题待排查)
方法二、设置图片Icon setIcon
from PyQt5 import QtCore, QtGui, QtWidgets
button = QPushButton()
img_path = '' # 图片路径
button.setIcon(QtGui.QIcon(img_path))
button.setIconSize(QtCore.QSize(25, 25)) # 设置icon大小
该方法也不需要调整图片大小,可以自适应适配。
但我在Mac上仍然出现了该问题: 点击button无按钮效果,可以触发事件