一篇简单的小文章,介绍如何给PyQt5的按钮(QPushButton)添加图片和绑定函数~
一、给按钮添加图片
首先,我们来了解一下语法~
""" 按钮对象名.setStyleSheet("QPushButton{border-image: url(图片名 或 图片路径)}") """
#例子
pushbutton1 = QPushButton(window)
pushbutton1.setStyleSheet("QPushButton{border-image: url(images/login_button.png)}")
#相对路径和绝对路径都可以哦
看一下最终效果~(tips:添加图片的按钮记得设置成和图片一样大小)
二、解决按钮绑定函数可能出现的错误
当你想要给一个按钮绑定函数时(以下就以按钮被点击时 即clicked,发出信号绑定函数为例)
先来看一下一般方法绑定的源代码——
#这里 write_password() 函数内容不重要,但是要记得定义哈
b1 = QPushButton(window) #创建按钮对象
b1.setGeometry(52,436,300,45) #设置按钮的位置和大小
b1.setStyleSheet("QPushButton{border-image: url(images/login_button.png)}") #绑定图片
b1.setChecked(False) #设置开始时的状态为未选中
b1.clicked.connect(write_password()) #在被点击时执行 write_password() 函数
b1.clicked.connect(write_password())
TypeError: argument 1 has unexpected type 'NoneType'
这里给报错了,大致意思就是connect传入的参数 write_password() 的种类是NoneType
但是参数的值不可以是None,所以要把参数用 lambda 函数定义一下,使其的值不为None
b1.clicked.connect(lambda:write_password())
修改后的代码——
#这里 write_password() 函数内容不重要,但是要记得定义哈
b1 = QPushButton(window) #创建按钮对象
b1.setGeometry(52,436,300,45) #设置按钮的位置和大小
b1.setStyleSheet("QPushButton{border-image: url(images/login_button.png)}") #绑定图片
b1.setChecked(False) #设置开始时的状态为未选中
b1.clicked.connect(lambda:write_password()) #在被点击时执行 write_password() 函数
至此完美运行,问题解决啦~
如果对您有帮助的话,请点个赞吧,再见~~~