PyQt5 之關閉視窗

Galois發表於2020-03-30

關閉一個視窗最直觀的方式就是點選標題欄的那個叉,也可以使用程式關閉一個視窗。涉及到singleslots知識。
QPushButton 元件類:

QPushButton(string text, QWidget parent = None)

text 引數是想要顯示的按鈕名稱,parent 引數是放在按鈕上的元件,這裡這個引數是 QWidget。應用中的元件都是一層一層(繼承而來的?)的,在這個層裡,大部分的元件都有自己的父級,沒有父級的元件,是頂級的視窗。

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

import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
# 程式需要`QtCore`物件
from PyQt5.QtCore import QCoreApplication


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 建立一個繼承自 QPushButton 的按鈕。第一個引數是按鈕的文字,第二個引數是按鈕的父級元件,這裡,父級元件就是我們建立的繼承自 Qwidget 的 Example 類
        qbtn = QPushButton('Quit', self)
        # 事件傳遞系統在 PyQt5 內建的 single 和 slot 機制裡面。點選按鈕之後,訊號會被捕捉並給出既定的反應。QCoreApplication 包含了事件的主迴圈,它能新增和刪除所有的事件,instance() 建立了一個它的例項。QCoreApplication 是在 QApplication 裡建立的。點選事件和能終止程式並退出應用的 quit 函式繫結在了一起。在傳送者和接受者之間建立了通訊,傳送者就是按鈕,接受者就是應用物件
        qbtn.clicked.connect(QCoreApplication.instance().quit)
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(50, 50)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Quit button')
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
本作品採用《CC 協議》,轉載必須註明作者和本文連結
不要試圖用百米衝刺的方法完成馬拉松比賽。

相關文章