在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'
))