Maison  >  Article  >  développement back-end  >  PyQt5 doit apprendre à fermer la fenêtre tous les jours

PyQt5 doit apprendre à fermer la fenêtre tous les jours

不言
不言original
2018-04-19 11:26:0010639parcourir

Cet article présente principalement en détail la fermeture des fenêtres que vous devez apprendre chaque jour dans PyQt5. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer

La façon la plus simple de fermer une fenêtre est de cliquer sur le x. marque sur la barre de titre. Cependant, dans l'exemple suivant, nous montrerons comment contrôler la fermeture de la fenêtre par programme. Nous utiliserons les signaux/slots de PyQt5.

Ce qui suit est la méthode de construction du contrôle QPushButton que nous avons utilisé dans l'exemple.

QPushButton(string text, QWidget parent = None)

Le paramètre texte est le texte à afficher sur le bouton. parent Où placer le contrôle bouton. Dans l'exemple suivant, nous placerons le contrôle du bouton dans un QWidget. Les contrôles de fenêtre d'une application peuvent former une structure hiérarchique. À ce niveau, la plupart des contrôles ont leurs contrôles parents et les contrôles sans contrôle parent sont des fenêtres de niveau supérieur.

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

"""
PyQt5 教程

这个程序创建一个退出按钮。当我们按下按钮,应用程序将终止。

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

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtCore import QCoreApplication

class Example(QWidget):

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

  self.initUI()

 def initUI(self):

  btn = QPushButton('退出', self)
  btn.clicked.connect(QCoreApplication.instance().quit)
  btn.resize(btn.sizeHint())
  btn.move(50, 50)

  self.setGeometry(300, 300, 300, 220)
  self.setWindowTitle('退出按钮')  
  self.show()

if __name__ == '__main__':

 app = QApplication(sys.argv)
 ex = Example()
 sys.exit(app.exec_())

Dans cet exemple, nous créons un bouton de sortie. Lorsque vous cliquez sur le bouton, l'application se termine.

from PyQt5.QtCore import QCoreApplication

Nous devons utiliser l'objet QCoreApplication dans le module QtCore

 btn = QPushButton('退出', self)

Nous créons un bouton, qui est une instance de la classe QPushButton. Le premier paramètre du constructeur est le label du bouton. Le deuxième paramètre est le contrôle de la fenêtre parent. Le contrôle de fenêtre parent est le contrôle Exemple, qui est une classe héritée de QWidget.

btn.clicked.connect(QCoreApplication.instance().quit)

Le système de gestion des événements est construit sur le mécanisme signal/slot de PyQt5. Si nous cliquons sur le bouton, le bouton émettra un signal et le signal de clic est connecté à la méthode quit() pour terminer l'application.

Le slot peut être un slot Qt ou n'importe quel appel Python. QCoreApplication contient la boucle d'événements principale ; elle gère et distribue tous les événements. La méthode instance() nous donne son instance actuelle. Notez qu’il faut distinguer QCoreApplication de QApplication.

Expéditeur et destinataire : Communication entre deux objets. L'expéditeur est le bouton et le destinataire est l'objet de l'application.

Le concept est un peu déroutant, mettons les choses au clair ici :

Le bouton (btn) est l'émetteur. Une fois le bouton cliqué, un signal de clic est envoyé. Cliquez sur le signal pour vous connecter au slot (il peut s'agir d'un slot Qt ou de n'importe quel appel Python).
Dans notre cas, il s'agit d'un slot Qt, QCoreApplication gère et distribue tous les événements Qt, en distribuant l'événement quit de l'instance (cette instance (récepteur)).

C’est probablement ce que cela signifie, prenez votre temps pour comprendre !

Une fois le programme exécuté, cliquez sur le bouton Quitter pour fermer le programme.

PyQt5 doit apprendre à fermer la fenêtre tous les jours

Recommandations associées :

Boîte de message contextuelle à apprendre absolument de PyQt5 tous les jours

PyQt5 réalise l'effet de barre de progression du téléchargement

PyQt5 doit apprendre l'effet de barre de progression tous les jours

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:
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