Как менять статус у PushButton и картинку вместе с ней
У меня в кнопку добавляются две картинки:
icon = QIcon()
icon.addFile(u":/icons/icons/file_off.png", QSize(), QIcon.Normal, QIcon.Off)
icon.addFile(u":/icons/icons/file_on.png", QSize(), QIcon.Normal, QIcon.On)
self.btn_file_1.setIcon(icon)
При открытии программы отображается первая картинка, как менять картинку на вторую при нажатии кнопки?
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Как вариант:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
class ProxyStyle(QProxyStyle):
def drawControl(self, control, option, painter, widget):
if control == QStyle.CE_PushButtonLabel:
QCommonStyle.drawControl(self, control, option, painter, widget)
else:
super().drawControl(control, option, painter, widget)
class Test(QMainWindow):
def __init__(self, parent=None):
super(Test, self).__init__(parent=parent)
self.resize(300, 400)
icon = QIcon()
icon.addFile("lightOn.png", state=QIcon.On)
icon.addFile("lightOff.png", state=QIcon.Off)
button = QPushButton(self)
button.setCheckable(True)
button.setIcon(icon)
button.setIconSize(QSize(150, 150))
button.setGeometry(50, 50, 200, 200)
verString = "PyQt version: " + PYQT_VERSION_STR + "\n"
verString += "Qt version: " + qVersion()
label = QLabel(verString, self)
label.setGeometry(50, 250, 200, 150)
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setStyle(QStyleFactory.create("fusion"))
proxy = ProxyStyle(app.style())
app.setStyle(proxy)
test = Test()
test.show()
sys.exit(app.exec_())

