關閉一個視窗最直觀的方式就是點選標題欄的那個叉,也可以使用程式關閉一個視窗。涉及到single
、slots
知識。
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 協議》,轉載必須註明作者和本文連結