當(dāng)我們關(guān)閉一個應(yīng)用時京腥,最常用的方式可能是點(diǎn)擊窗口右上方的 X,但其實(shí)我們也可以設(shè)置一個退出按鈕來實(shí)現(xiàn)這個功能镇草。這里用到了信號和槽的概念立莉,也是
Qt
最核心的機(jī)制,在以后的筆記中會詳細(xì)解釋烟很。
本文由Cescfangs 譯自ZetCode pyqt5系列教程 并作適當(dāng)修改颈墅。
我們會用到下面的構(gòu)造函數(shù)來創(chuàng)建一個QpushButton
:
QPushButton(string text, QWidget parent = None)
text
將會顯示在按鈕上,我們把按鈕放在parent
這個父部件上雾袱,在這個 App 里用的是Qwidget
恤筛,大多數(shù)部件都是繼承自父部件而來的,但有些部件沒有父部件芹橡,這些就是頂級窗口毒坛。
以下是源代碼:
import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
from PyQt5.QtCore import QCoreApplication
class Exp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
qtn = QPushButton('Quit', self)
qtn.resize(qtn.sizeHint())
qtn.clicked.connect(QCoreApplication.quit)
qtn.move(40, 50)
self.setGeometry(200, 300, 400, 400)
self.setWindowTitle('Quit')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Exp()
sys.exit(app.exec_())
通過以上的代碼,我們創(chuàng)建了一個退出按鈕林说,按下這個按鈕程序就會自動結(jié)束煎殷。
from PyQt5.QtCore import QCoreApplication
要使用quit
首先要調(diào)用QCoreApplication
qtn = QPushButton('Quit', self)
創(chuàng)建一個按鈕,qtn
是QPushButton
類的一個實(shí)例述么,QPushButton
的第一個參數(shù)是按鈕上的文字蝌数,第二個參數(shù)指明這個按鈕的父部件,在這里是Exp
度秘。
qtn.clicked.connect(QCoreApplication.quit)
Qt 也好顶伞,Pyqt 也好,處理事件的核心機(jī)制都是信號槽剑梳。當(dāng)我們按下這個按鈕時唆貌,就釋放了clicked
這個信號,槽可以是 Qt 或者 Python(只要能調(diào)用就行)垢乙。QCoreApplication
包含了主要的事件循環(huán)锨咙,它可以處理傳遞任何事件。clicked
信號連接了quit
這個方法酪刀,從而結(jié)束進(jìn)程骂倘。
整個過程由兩個對象完成,發(fā)射器和接收器荧库,按鈕是發(fā)射器,這個應(yīng)用是接收器摇邦。