The PyQt® Signals

Posted by

Les signaux dans PyQt®

Les signaux dans PyQt® sont des mécanismes puissants qui permettent aux objets de communiquer entre eux de manière asynchrone. Ils sont souvent utilisés pour déclencher des actions ou transmettre des informations entre des composants d’une application PyQt®.

Les signaux sont émis par des objets et peuvent être connectés à des fonctions, appelées slots, qui réagissent aux signaux émis. Les signaux peuvent transporter des données et sont typiquement utilisés pour communiquer des événements tels que des clics de souris, des changements de texte ou des mises à jour de données.

Pour utiliser les signaux dans PyQt®, on crée des sous-classes d’objets QObject et on définit des signaux à l’aide de la méthode pyqtSignal(). Par exemple, pour créer un signal qui transmet une chaîne de caractères, on écrit :

<!DOCTYPE html>
<html>
  <head>
    <title>Les signaux dans PyQt®</title>
  </head>
  <body>
    <code>
      <pre>
from PyQt5.QtCore import QObject, pyqtSignal

class MonObjet(QObject):
    # Définition du signal
    mon_signal = pyqtSignal(str)
</pre>
    </code>
  </body>
</html>

Ensuite, on peut émettre le signal à tout moment en utilisant la méthode emit(). Par exemple, pour émettre un signal contenant la chaîne de caractères "Bonjour", on écrit :

<!DOCTYPE html>
<html>
  <head>
    <title>Les signaux dans PyQt®</title>
  </head>
  <body>
    <code>
      <pre>
mon_objet = MonObjet()
mon_objet.mon_signal.emit("Bonjour")
</pre>
    </code>
  </body>
</html>

Pour connecter un signal à une fonction slot, on utilise la méthode connect(). Par exemple, pour connecter le signal mon_signal à la fonction mon_slot qui affiche la chaîne de caractères émise, on écrit :

<!DOCTYPE html>
<html>
  <head>
    <title>Les signaux dans PyQt®</title>
  </head>
  <body>
    <code>
      <pre>
def mon_slot(message):
    print(message)

mon_objet.mon_signal.connect(mon_slot)
</pre>
    </code>
  </body>
</html>

Les signaux dans PyQt® offrent une grande flexibilité pour créer des interfaces utilisateur réactives et interconnectées. En comprenant comment utiliser les signaux et les slots, les développeurs peuvent créer des applications PyQt® robustes et efficaces.