PyQt5 señales y ranuras (signals and slots)

Aplicaciones gráficas (GUI) son controlados por eventos, a diferencia de las aplicaciones de consola o de terminal. La acción de un usuario como hacer clic en un botón o seleccionar un elemento en una lista se denomina evento.
Si se produce un evento, cada widget PyQt5 puede emitir una señal. Una señal no ejecuta ninguna acción, eso es hecho por una ranura.

Introducción a Señales y Ranuras (signals and slots)
Considera este ejemplo:
button.clicked.connect(self.slot_method)
El button click (signal/señal) está conectado (connected) a la acción (slot/ranura).
En este ejemplo, el método slot_method se llamará si la señal emite. 
Este principio de conectar métodos de slots/ranuras o función a un widget, se aplica a todos los widgets.
widget.signal.connect(slot_method)
o podemos definir explícitamente la señal:
QtCore.QObject.connect(widget, QtCore.SIGNAL(‘signalname’), slot_function)
PyQt admite muchos tipos de señales, no solo clics

Ejemplo
Podemos crear un método (slot) que está conectado a un widget. Un slot es cualquier función o método invocable. 


 Al ejecutar la aplicación, podemos hacer clic en el botón para ejecutar la acción (slot).







from PyQt5.QtWidgets import (QApplication, QComboBox, QDialog,
        QDialogButtonBox, QFormLayout, QGridLayout, QGroupBox, QHBoxLayout,
        QLabel, QLineEdit, QMenu, QMenuBar, QPushButton, QSpinBox, QTextEdit,
        QVBoxLayout)
 
import sys
 
class Dialog(QDialog):
 
    def slot_method(self):
        print('método de slot/ranura llamado.')
 
    def __init__(self):
        super(Dialog, self).__init__()
 
        button=QPushButton("Click")
        button.clicked.connect(self.slot_method)
 
        mainLayout = QVBoxLayout()
        mainLayout.addWidget(button)
 
        self.setLayout(mainLayout)
        self.setWindowTitle("Ejemplo de botón")
 
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    dialog = Dialog()
sys.exit(dialog.exec_())


AdelanteAtras


Comentarios

Publicar un comentario

Entradas más populares de este blog

Ejemplos de interfaces gráficas realizadas con Python y PyQT5

Kivy - aún más fácil, más nativo

PyQT5 – Python Tutorial