在按下和释放信号时更改按钮文本颜色的更简洁方法

Cleaner way for changing button's text color on signal pressed & released

在我的 pyqt gui 中,按下按钮时按钮的文本颜色会发生变化。当释放按钮时,颜色会恢复到原来的颜色。

我的代码如下:

    self.ui.pButton_save.pressed.connect(self.save_pressed)
    self.ui.pButton_cancel.pressed.connect(self.cancel_pressed)
    self.ui.pButton_save.released.connect(self.save_released)
    self.ui.pButton_cancel.released.connect(self.cancel_released)

def save_pressed(self):
    self.ui.pButton_save.setStyleSheet("color: white")

def cancel_pressed(self):
    self.ui.pButton_cancel.setStyleSheet("color: white")

def save_released(self):
    self.ui.pButton_save.setStyleSheet("color: green")

def cancel_released(self):
    self.ui.pButton_cancel.setStyleSheet("color: red")

代码运行良好。但是正如您所看到的,这个简单的任务有很多行。可能有一种更清洁(更 Pythonic)的方式来做到这一点。有什么建议吗?

这是使用 Qt Style Sheet 实现的方法,Qt Style 处理按下按钮等状态。

self.ui.pButton_save.setStyleSheet(
    "QPushButton:pressed{color: white} QPushButton{color: green}")
self.ui.pButton_cancel.setStyleSheet(
    "QPushButton:pressed{color: white} QPushButton{color: red}")