Home  >  Article  >  Backend Development  >  PyQt5 must learn to close the window every day

PyQt5 must learn to close the window every day

不言
不言Original
2018-04-19 11:26:0010758browse

This article mainly introduces in detail the closing windows that you must learn every day in PyQt5. It has certain reference value. Interested friends can refer to it

The simplest way to close a window is Click the x mark on the title bar. However, in the following example, we will show how to control the closing of the window programmatically. We will use PyQt5’s signals/slots.

The following is the construction method of the QPushButton control we used in the example.

QPushButton(string text, QWidget parent = None)

The text parameter is the text to display on the button. parent Where to place the button control. In the following example we will put the button control into a QWidget. An application's window controls can form a hierarchical structure. At this level, most controls have their parent controls, and controls without a parent control are top-level windows.

#!/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_())

In this example, we create an exit button. When the button is clicked, the application terminates.

from PyQt5.QtCore import QCoreApplication

We need to use the QCoreApplication object in the QtCore module

 btn = QPushButton('退出', self)

We created A button, which is an instance of the QPushButton class. The first parameter of the constructor is the button's label. The second parameter is the parent window control. The parent window control is the Example control, which is a class inherited from QWidget.

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

The event handling system is built on the signal/slot mechanism of PyQt5. If we click the button, the button will emit a signal, and the click signal is connected to the quit() method to terminate the application.

The slot can be a Qt slot or any Python call. QCoreApplication contains the main event loop; it handles and dispatches all events. The instance() method gives us its current instance. Note, distinguish QCoreApplication from QApplication.

Sender and receiver: carried out between two objects of communication. The sender is the button and the receiver is the application object.

The concept is a bit confusing, let’s sort it out here:

The button (btn) is the transmitter. After the button is clicked, a click signal is sent. Click the signal to connect to the slot (can be a Qt slot or any Python call).
In our example it is Qt's slot. QCoreApplication handles and dispatches all Qt events and dispatches the quit event of instance (this instance (receiver)).

That’s probably what it means, take your time and understand it!

After the program is executed, click the exit button to close the program.

PyQt5 must learn to close the window every day

Related recommendations:

PyQt5 must learn the pop-up message box every day

PyQt5 realizes the download progress bar effect

PyQt5 must learn the progress bar effect every day

##

The above is the detailed content of PyQt5 must learn to close the window every day. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn