Как вернуть QPushButton к обратному состоянию pyqt5?
Есть такой код:
self.checkBtn = QPushButton('', self)
self.checkBtn.setIcon(QIcon('images/background/CheckBtn passive.png'))
self.checkBtn.setIconSize(QSize(60, 50))
self.checkBtn.clicked[bool].connect(self.setActiveCheck)
def setActiveCheck(self):
button = self.sender()
button.setIcon(QIcon('images/background/CheckBtn active.png'))
button.setIconSize(QSize(60, 50))
При нажатии кнопки, у него меняется картинка на фоне. Проблема в том, что нужно обратно изменять картинку в первоначальное состояние при повторном нажатии. Функцию скопировал, все изменил, но как это поместить в событие, чтобы подключалось в зависимости от булевой переменной?
Решение найдено, но теперь оно не хочет работать:
self.checkBtn = QPushButton('', self)
self.checkBtn.setIcon(QIcon('images/background/CheckBtnpassive.png'))
self.checkBtn.setIconSize(QSize(60, 50))
self.checkBtn.toggled.connect(self.setActive)
def setActive(self, state):
if state:
self.checkBtn.setIcon(QIcon('images/background/CheckBtn active.png'))
self.checkBtn.setIconSize(QSize(60, 50))
else:
self.checkBtn.setIcon(QIcon('images/background/CheckBtnpassive.png'))
self.checkBtn.setIconSize(QSize(60, 50))
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Предлагаю делать так:
import sys
from PyQt5.Qt import *
class AppDemo(QWidget):
def __init__(self):
super().__init__()
self.checkBtn = QPushButton('', self)
self.checkBtn.setCheckable(True) # +++
self.checkBtn.setIcon(QIcon('Ok.png')) # ('images/background/CheckBtn passive.png'))
self.checkBtn.setIconSize(QSize(60, 50))
# self.checkBtn.clicked[bool].connect(self.setActiveCheck)
self.checkBtn.toggled.connect(self.setActiveCheck) # +++
def setActiveCheck(self, state):
if state:
self.checkBtn.setIcon(QIcon('im.png'))
else:
self.checkBtn.setIcon(QIcon('Ok.png'))
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = AppDemo()
demo.resize(200, 100)
demo.show()
sys.exit(app.exec_())
