Maison développement back-end Tutoriel Python Événements et signaux que vous devez apprendre chaque jour dans PyQt5

Événements et signaux que vous devez apprendre chaque jour dans PyQt5

Apr 20, 2018 pm 01:59 PM
pyqt5 事件 信号

Cet article présente principalement en détail les informations pertinentes sur les événements et les signaux qui doivent être appris chaque jour dans PyQt5. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer

Nous explorerons cette partie Comment PyQt5. les événements et les signaux sont implémentés dans les applications.

Événements

Toutes les applications GUI sont pilotées par des événements. Les événements d'application sont principalement générés par l'utilisateur, mais ils peuvent également être générés par d'autres méthodes, telles qu'une connexion Internet, un gestionnaire de fenêtres ou un minuteur. Lorsque nous appelons la méthode exec_() de l’application, l’application entre dans la boucle principale. La boucle principale détecte divers événements et les envoie aux objets événement.

Dans le modèle d'événement, il y a trois participants :

  • source d'événement (source d'événement)

  • objet d'événement (source d'événement) Objet)

  • cible de l'événement (cible de l'événement)

La source de l'événement est le changement d'état de l'objet qui génère les événements. Un objet événement (événement) est un objet qui encapsule les changements d'état dans une source d'événement. La cible de l'événement est l'objet qui souhaite être notifié. L'objet source d'événement représente la tâche de gestion d'un événement vers la cible de l'événement.

PyQt5 utilise un mécanisme de signal et de slot unique pour gérer les événements. Les signaux et les emplacements sont utilisés pour la communication entre les objets. Lorsqu'un événement spécifique se produit, un signal est émis. Le slot peut être n’importe quel appel Python. Le signal est émis lorsque le slot qui y est connecté est appelé.

Signaux et slotsSignaux et slots

Ceci est un exemple simple démontrant les signaux et les slots de PyQt5.


#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
PyQt5 教程

这个例子中,我们将QSlider的滑动信号连接到QLCDNumber中。

作者:我的世界你曾经来过
博客:http://blog.csdn.net/weiaitaowang
最后编辑:2016年8月1日
"""

import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QSlider, 
QLCDNumber, QVBoxLayout)
from PyQt5.QtCore import Qt

class Example(QWidget):

 def __init__(self):
 super().__init__()

 self.initUI()

 def initUI(self):

 lcd = QLCDNumber(self)
 sld = QSlider(Qt.Horizontal, self)

 vbox = QVBoxLayout()
 vbox.addWidget(lcd)
 vbox.addWidget(sld)

 self.setLayout(vbox)
 sld.valueChanged.connect(lcd.display)

 self.setGeometry(300, 300, 250, 150)
 self.setWindowTitle('信号/槽') 
 self.show()

if __name__ == '__main__':

 app = QApplication(sys.argv)
 ex = Example()
 sys.exit(app.exec_())
Copier après la connexion


Dans notre exemple, QtGui.QLCDNumber et QtGui.QSlider seront utilisés. Nous modifions les numéros LCD en faisant glisser le curseur.


sld.valueChanged.connect(lcd.display)
Copier après la connexion


Ici, le signal valueChanged du curseur est connecté à la fente d'affichage de l'écran LCD.

Un émetteur est un objet qui envoie des signaux. Un récepteur est un objet qui reçoit un signal. Le slot est la méthode de retour au signal.

Une fois le programme exécuté

Événements et signaux que vous devez apprendre chaque jour dans PyQt5

Remplacer le gestionnaire d'événements système

Les événements sont souvent traités dans PyQt5 par Remplacez le gestionnaire d'événements.


#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
PyQt5 教程

在这个例子中,我们执行事件处理程序。

作者:我的世界你曾经来过
博客:http://blog.csdn.net/weiaitaowang
最后编辑:2016年8月1日
"""

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtCore import Qt

class Example(QWidget):

 def __init__(self):
 super().__init__()

 self.initUI()

 def initUI(self):

 self.setGeometry(300, 300, 250, 150)
 self.setWindowTitle('事件处理') 
 self.show()

 def keyPressEvent(self, e):
 if e.key() == Qt.Key_Escape:
  self.close()

if __name__ == '__main__':

 app = QApplication(sys.argv)
 ex = Example()
 sys.exit(app.exec_())
Copier après la connexion


Dans notre cas, nous réimplémentons le gestionnaire d'événements keyPressEvent().


def keyPressEvent(self, e):
 if e.key() == Qt.Key_Escape:
 self.close()
Copier après la connexion


Si nous appuyons sur la touche Échap du clavier, l'application se termine.

Envoi d'événement de l'expéditeur d'événement

Afin de distinguer facilement plusieurs sources d'événements connectées à la même cible d'événement, la méthode sender() peut être utilisée dans PyQt5.


#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
PyQt5 教程

在这个例子中,我们确定事件发送对象。

作者:我的世界你曾经来过
博客:http://blog.csdn.net/weiaitaowang
最后编辑:2016年8月1日
"""

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton

class Example(QMainWindow):

 def __init__(self):
 super().__init__()

 self.initUI()

 def initUI(self):

 btn1 = QPushButton('按钮一', self)
 btn1.move(30, 50)

 btn2 = QPushButton('按钮二', self)
 btn2.move(150, 50)

 btn1.clicked.connect(self.buttonClicked)
 btn2.clicked.connect(self.buttonClicked)

 self.statusBar()

 self.setGeometry(300, 300, 300, 150)
 self.setWindowTitle('事件发送') 
 self.show()

 def buttonClicked(self):

 sender = self.sender()
 self.statusBar().showMessage(sender.text() + ' 被按下')

if __name__ == '__main__':

 app = QApplication(sys.argv)
 ex = Example()
 sys.exit(app.exec_())
Copier après la connexion


Dans notre cas il y a deux boutons. Les deux boutons sont connectés à la méthode buttonClicked() et nous répondons au bouton cliqué en appelant la méthode sender().


btn1.clicked.connect(self.buttonClicked)
btn2.clicked.connect(self.buttonClicked)
Copier après la connexion


Deux boutons sont connectés au même emplacement.


def buttonClicked(self):

 sender = self.sender()
 self.statusBar().showMessage(sender.text() + ' 被按下')
Copier après la connexion


Nous déterminons la source du signal en appelant la méthode sender(). Dans la barre d'état de l'application, affiche le libellé du bouton enfoncé.

Après l'exécution du programme

Événements et signaux que vous devez apprendre chaque jour dans PyQt5

Émission personnalisée de signaux

Les objets créés à partir d'un QObject peuvent émettre des signaux . Dans l'exemple ci-dessous, nous verrons comment personnaliser le signal émis.


#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
PyQt5 教程

在这个例子中,我们显示了如何以发射信号。

作者:我的世界你曾经来过
博客:http://blog.csdn.net/weiaitaowang
最后编辑:2016年8月1日
"""

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import pyqtSignal, QObject

class Communicate(QObject):
 closeApp = pyqtSignal()

class Example(QMainWindow):

 def __init__(self):
 super().__init__()

 self.initUI()

 def initUI(self):

 self.c = Communicate()
 self.c.closeApp.connect(self.close)

 self.setGeometry(300, 300, 300, 150)
 self.setWindowTitle('发射信号') 
 self.show()

 def mousePressEvent(self, event):

 self.c.closeApp.emit()

if __name__ == '__main__':

 app = QApplication(sys.argv)
 ex = Example()
 sys.exit(app.exec_())
Copier après la connexion


Nous créons un nouveau signal appelé closeApp. Ce signal émet un événement de pression de souris. Ce signal est connecté au slot close() dans QMainWindow.


class Communicate(QObject):
 closeApp = pyqtSignal()
Copier après la connexion


Créez une classe Communicate héritée de QObject, qui possède une propriété de la classe pyqtSignal().


self.c = Communicate()
self.c.closeApp.connect(self.close)
Copier après la connexion


Connectez notre signal closeApp personnalisé à l'emplacement close() dans QMainWindow.


def mousePressEvent(self, event):
 self.c.closeApp.emit()
Copier après la connexion


Lorsque notre souris clique sur la fenêtre du programme, le signal closeApp est émis (emit). Application terminée.

Recommandations associées :

Python PyQt4 implémente l'effet de tiroir QQ

PyQt implémente l'effet de commutation d'interface


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment installer pyqt5 Comment installer pyqt5 Nov 30, 2023 pm 02:05 PM

Étapes d'installation de pyqt5 : 1. Assurez-vous que Python et pip sont installés sur l'ordinateur ; 2. Entrez la commande « pip install PyQt5 » dans le terminal ou l'invite de commande pour installer PyQt5 ; Module PyQt5 dans le script Python et Démarrer ; 4. Vous pouvez installer certaines fonctions ou composants spécifiques en entrant la commande « pip install PyQt5.QtGui » 5. Si vous rencontrez des problèmes, vous pouvez essayer de mettre à niveau pip et setuptools ;

ID d'événement 4660 : objet supprimé [Correctif] ID d'événement 4660 : objet supprimé [Correctif] Jul 03, 2023 am 08:13 AM

Certains de nos lecteurs ont rencontré l'événement ID4660. Ils ne savent souvent pas quoi faire, c'est pourquoi nous l'expliquons dans ce guide. L'ID d'événement 4660 est souvent enregistré lorsque des objets sont supprimés. Nous explorerons donc également quelques moyens pratiques de le corriger sur votre ordinateur. Qu'est-ce que l'événement ID4660 ? L'ID d'événement 4660 est lié aux objets dans Active Directory et sera déclenché par l'un des facteurs suivants : Suppression d'objet – Un événement de sécurité avec l'ID d'événement 4660 est enregistré chaque fois qu'un objet est supprimé d'Active Directory. Modifications manuelles – L'ID d'événement 4660 peut être généré lorsqu'un utilisateur ou un administrateur modifie manuellement les autorisations d'un objet. Cela peut se produire lors de la modification des paramètres d'autorisation, de la modification des niveaux d'accès ou de l'ajout ou de la suppression de personnes ou de groupes.

Recevez les événements du calendrier à venir sur l'écran de verrouillage de votre iPhone Recevez les événements du calendrier à venir sur l'écran de verrouillage de votre iPhone Dec 01, 2023 pm 02:21 PM

Sur les iPhones exécutant iOS 16 ou version ultérieure, vous pouvez afficher les événements du calendrier à venir directement sur l'écran de verrouillage. Lisez la suite pour savoir comment procéder. Grâce aux complications du cadran, de nombreux utilisateurs d'Apple Watch sont habitués à pouvoir jeter un coup d'œil à leur poignet pour voir le prochain événement du calendrier à venir. Avec l'avènement d'iOS16 et des widgets d'écran de verrouillage, vous pouvez afficher les mêmes informations sur les événements du calendrier directement sur votre iPhone sans même déverrouiller l'appareil. Le widget Calendar Lock Screen est disponible en deux versions, vous permettant de suivre l'heure du prochain événement à venir ou d'utiliser un widget plus grand qui affiche les noms des événements et leurs heures. Pour commencer à ajouter des widgets, déverrouillez votre iPhone à l'aide de Face ID ou Touch ID, appuyez et maintenez

Qu'est-ce qu'un signal analogique et qu'est-ce qu'un signal numérique Qu'est-ce qu'un signal analogique et qu'est-ce qu'un signal numérique Jan 30, 2023 pm 02:44 PM

Les signaux analogiques font référence à des informations représentées par des grandeurs physiques changeant continuellement. L'amplitude, la fréquence ou la phase du signal change continuellement avec le temps, ou dans un intervalle de temps continu, la quantité caractéristique représentant l'information peut être présentée à tout instant sous la forme d'un signal de. n'importe quelle valeur. Un signal numérique fait référence à un signal dans lequel la variable indépendante est discrète et la variable dépendante est également discrète. La variable indépendante de ce signal est représentée par un nombre entier et la variable dépendante est représentée par un nombre parmi des nombres finis dans les ordinateurs. la taille des signaux numériques est souvent représentée par une représentation de nombres binaires finis.

Le téléphone de Vivo avec le signal le plus fort ! vivo X100s est équipé d'un système universel d'amplification du signal : 21 antennes, conception surround 360° Le téléphone de Vivo avec le signal le plus fort ! vivo X100s est équipé d'un système universel d'amplification du signal : 21 antennes, conception surround 360° Jun 03, 2024 pm 08:41 PM

Selon les informations du 13 mai, le vivoX100s a été officiellement lancé ce soir. En plus d'excellentes images, le nouveau téléphone fonctionne également très bien en termes de signal. Selon l'introduction officielle de vivo, le vivoX100s utilise un système universel innovant d'amplification du signal, équipé de jusqu'à 21 antennes. Cette conception a été réoptimisée sur la base de l'écran direct pour équilibrer de nombreuses exigences de signal telles que la 5G, la 4G, le Wi-Fi, le GPS et le NFC. Cela fait du vivoX100s le téléphone mobile doté de la capacité de réception de signal la plus puissante de l’histoire de Vivo. Le nouveau téléphone utilise également un design surround unique à 360°, avec des antennes réparties autour du corps. Cette conception améliore non seulement la force du signal, mais optimise également diverses postures de maintien quotidiennes pour éviter les problèmes causés par des méthodes de maintien inappropriées.

Hyper complet ! Guide d'utilisation du framework d'interface graphique Python PyQt5 ! Hyper complet ! Guide d'utilisation du framework d'interface graphique Python PyQt5 ! Apr 13, 2023 am 08:43 AM

Framework GUI commun PyQt5 : Qt est une bibliothèque d'interface utilisateur graphique C++ multiplateforme. QT appartenait autrefois à Nokia, puis vendu à Digia Oyj, une société de logiciels finlandaise. PyQt5 est une interface Python basée sur Qt5 de Digia et se compose d'un ensemble de modules Python. PyQt5 lui-même compte plus de 620 classes et 6 000 fonctions et méthodes. Peut fonctionner sur plusieurs plates-formes, notamment : Unix, Windows et Mac OS. Pyside6 : Pyside est le package Python officiellement fourni par QT Company. La version précédente était Pyside2, qui correspond à QT5. Les règles de dénomination de la dernière version ont été ajustées et remplacées par Pysid.

Solution au problème selon lequel le téléphone mobile ne peut pas se connecter au WiFi (comment résoudre le problème selon lequel le téléphone mobile a un signal WiFi mais ne peut pas accéder à Internet) Solution au problème selon lequel le téléphone mobile ne peut pas se connecter au WiFi (comment résoudre le problème selon lequel le téléphone mobile a un signal WiFi mais ne peut pas accéder à Internet) Apr 19, 2024 pm 03:25 PM

Le WiFi est devenu un élément indispensable de la vie quotidienne des gens avec le développement de la technologie. Parfois, même si notre téléphone mobile indique qu'il y a un signal WiFi, il ne peut pas se connecter normalement à Internet. Aujourd'hui, nous allons discuter de quelques solutions à ce problème qui dérange de nombreuses personnes. 1 : Vérifiez les paramètres WiFi Vous devez d'abord vérifier si vos paramètres WiFi sont corrects, si votre téléphone ne parvient pas à se connecter au WiFi. Et connectez-vous au bon réseau WiFi, assurez-vous que la fonction WiFi de votre téléphone est activée. 2 : Redémarrez le téléphone mobile et le routeur. Parfois, le téléphone mobile ne peut pas se connecter au WiFi et des problèmes de communication peuvent survenir entre le téléphone mobile et le routeur. Pour résoudre ce problème, vous pouvez essayer de redémarrer votre téléphone et votre routeur.

En JavaScript, quel est le but de l'événement « oninput » ? En JavaScript, quel est le but de l'événement « oninput » ? Aug 26, 2023 pm 03:17 PM

Lorsqu'une valeur est ajoutée à la zone de saisie, l'événement oninput se produit. Vous pouvez essayer d'exécuter le code suivant pour comprendre comment implémenter les événements oninput en JavaScript - Exemple<!DOCTYPEhtml><html> <body> <p>Écrivez ci-dessous :</p> <inputtype="text&quot

See all articles