在Python中使用PyQt或者PySide中按钮对象,可以使用setStyleSheet()方法更新按钮对象的样式,如果需要多次或者对多个按钮更新类似的样式,可以先建立一个样式字符串,字符串中包含定义的变量,通过字符串的格式化format()方法传入参数,从而进行样式更改。
下面代码定义了一个按钮的样式字符串,定义了3个变量,分别是默认显示的图片,及鼠标移动到按钮对象上显示的图片,及按钮按下后显示的图片。在按钮单击事件槽函数中可以对多个(一组)按钮的样式进行更改。
# 按钮样式,定义了按钮默认显示的图片,及鼠标移动其上,及鼠标按下时显示的图片样式
pushBtn_sheet = """QPushButton {{ border: none; background-image: url({background_image}); background-repeat: no-repeat; background-position: center; }} QPushButton:hover {{ background-image: url({hover_image}); }} QPushButton:pressed {{ background-image: url({pressed_image}); }} """# 在按钮对象1中设置按钮1和按钮2的样式
def menuBtn1Click(self):# 设置menuBtn1按钮样式self.menuBtn1.setStyleSheet(pushBtn_sheet.format(background_image = 'gui/images/icons/btn1.png',hover_image = 'gui/images/icons/btn1_1.png',pressed_image = 'gui/images/icons/btn1_2.png'))# 设置menuBtn2按钮样式self.menuBtn2.setStyleSheet(pushBtn_sheet.format(background_image = 'gui/images/icons/btn2.png',hover_image = 'gui/images/icons/btn2_1.png',pressed_image = 'gui/images/icons/btn2_2.png'))