es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se traduce “Toggle power icon on click the push Button in PyQt5” al español?

En PyQt5 quiero una funcionalidad en la cual el botón pulsador tenga un icono de encendido:

Al presionarlo muestra una imagen de encendido:
enter image description here
Al volver a presionarlo muestra una imagen de apagado:
enter image description here

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
import sys

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        # cuadro de diálogo principal
        self.setWindowTitle("Hatchary System")
        self.resize(1032, 665)
        self.setStyleSheet("background-color: rgb(54, 54, 54);")

        button = QPushButton('', self)
        button.setGeometry(QtCore.QRect(20, 20, 71, 61))
        button.setStyleSheet("border: rgb(0, 0, 0);")
        button.setText("")
        button.setIcon(QIcon('/home/lenovo/Downloads/feather-White/power.svg'))
        button.setCheckable(True)
        button.toggle()
        button.setIcon(QIcon('/home/lenovo/Pictures/images/feather/power.svg'))
        button.setIconSize(QtCore.QSize(32, 32))
        self.show()

app = QApplication([])
mw = MainWindow()

app.exec_()

Salida:
enter image description here

Soy nuevo en PyQt5. Sé que este código no es correcto, pero no puedo encontrar una forma de hacerlo posible.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para implementar la funcionalidad de tener un botón de pulsación con un icono de encendido que alterna entre dos imágenes de encendido (ON) y apagado (OFF), se puede utilizar el método setIcon() para establecer el icono para el botón, y conectar la señal de cambio de estado del botón a un slot que cambie el icono según el estado del botón.

    Aquí hay un fragmento de código de ejemplo que demuestra la funcionalidad:

    from PyQt5 import QtCore, QtGui, QtWidgets
    from PyQt5.QtGui import QIcon
    from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
    import sys
    
    class MainWindow(QWidget):
        def __init__(self):
            super().__init__()
            # cuadro de diálogo principal
            self.setWindowTitle("Sistema Hatchary")
            self.resize(1032, 665)
            self.setStyleSheet("background-color: rgb(54, 54, 54);")
    
            self.button = QPushButton('', self)
            self.button.setGeometry(QtCore.QRect(20, 20, 71, 61))
            self.button.setStyleSheet('border: rgb(0, 0, 0);')
            self.button.setCheckable(True)
            self.button.setIcon(QIcon('/ruta/a/power_off_icon.png'))
            self.button.setIconSize(QtCore.QSize(32, 32))
            self.button.toggled.connect(self.onPowerButtonToggled)
            self.show()
    
        def onPowerButtonToggled(self, checked):
            if checked:
                self.button.setIcon(QIcon('/ruta/a/power_on_icon.png'))
            else:
                self.button.setIcon(QIcon('/ruta/a/power_off_icon.png'))
    
    
    app = QApplication([])
    mw = MainWindow()
    app.exec_()
    

    En este fragmento de código, el botón de encendido se crea mediante la creación de una instancia de QPushButton, estableciendo su icono en “power_off_icon.png” utilizando el método setIcon(), y haciéndolo seleccionable.

    La señal “toggled” del botón se conecta al slot “onPowerButtonToggled”, que toma un argumento booleano que indica si el botón está seleccionado o no. Si el botón está seleccionado, se establece “power_on_icon.png” como el icono del botón utilizando el método setIcon(), de lo contrario, se establece “power_off_icon.png”.

    Nota que para utilizar este código, debes reemplazar “/ruta/a/power_on_icon.png” y “/ruta/a/power_off_icon.png” con las rutas reales a tus archivos de iconos.

Comments are closed.