PyQt5每天必學(xué)之關(guān)閉窗口
最簡(jiǎn)單的關(guān)閉一個(gè)窗口的方法是點(diǎn)擊標(biāo)題欄上的 x 標(biāo)志。但是,在下面的例子中,我們將展示如何通過(guò)編程來(lái)控制關(guān)閉窗口。我們將使用PyQt5的信號(hào)/槽。
以下是我們?cè)诶又惺褂玫降?QPushButton 控件的構(gòu)造方法。
QPushButton(string text, QWidget parent = None)
text 參數(shù)是在按鈕上顯示的文本。parent 要將按鈕控件放在哪里。在下面的例子中我們要將按鈕控件放到 QWidget里。一個(gè)應(yīng)用程序的窗口控件可以形成一個(gè)分層結(jié)構(gòu),在這個(gè)層次,大多數(shù)控件有他們的父控件,沒(méi)有父控件的控件即是頂層窗口。
#!/usr/bin/python3 # -*- coding: utf-8 -*- """ PyQt5 教程 這個(gè)程序創(chuàng)建一個(gè)退出按鈕。當(dāng)我們按下按鈕,應(yīng)用程序?qū)⒔K止。 作者:我的世界你曾經(jīng)來(lái)過(guò) 博客: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_())
在這個(gè)例子中,我們創(chuàng)建了一個(gè)退出按鈕。當(dāng)點(diǎn)擊按鈕,應(yīng)用程序終止。
from PyQt5.QtCore import QCoreApplication
我們需要使用 QtCore 模塊中的 QCoreApplication 對(duì)象
btn = QPushButton('退出', self)
我們創(chuàng)建了一個(gè)按鈕,按鈕是 QPushButton 類的一個(gè)實(shí)例。構(gòu)造函數(shù)的第一個(gè)參數(shù)是按鈕的標(biāo)簽。第二個(gè)參數(shù)是父窗口控件。父窗口控件是Example 控件,這是一個(gè)繼承自 QWidget 的類。
btn.clicked.connect(QCoreApplication.instance().quit)
該事件處理系統(tǒng)建立在 PyQt5 的信號(hào)/槽的機(jī)制上。如果我們點(diǎn)擊該按鈕,按鈕將會(huì)發(fā)出信號(hào),單擊信號(hào)連接到 quit() 方法使應(yīng)用程序終止。
槽可以是 Qt 的槽也可以是 Python 的任何調(diào)用。 QCoreApplication 包含主事件循環(huán);它處理和調(diào)度所有事件。instance()方法為我們提供了其當(dāng)前實(shí)例。注意,區(qū)分 QCoreApplication 與 QApplication。
發(fā)送器和接收器:在通信的兩個(gè)對(duì)象之間進(jìn)行。發(fā)送器是按鈕,接收器是應(yīng)用對(duì)象。
概念有些混亂,這里整理一下:
按鈕(btn)是發(fā)送器。點(diǎn)擊(clicked)按鈕后,發(fā)出點(diǎn)擊信號(hào)。點(diǎn)擊信號(hào)連接(connect)到槽(可以是 Qt 的槽也可以是 Python 的任何調(diào)用)。
在我們的例子中是Qt的槽,QCoreApplication處理和調(diào)度所有Qt事件,調(diào)度出instance(這個(gè)實(shí)例(接收器))的 quit 事件。
大概就這個(gè)意思了,慢慢理解吧!
程序執(zhí)行后,點(diǎn)擊退出按鈕,將關(guān)閉程序。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 關(guān)于python pyqt5安裝失敗問(wèn)題的解決方法
- python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5表格控件QTableView詳細(xì)使用方法與實(shí)例
- python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5控件QTableWidget詳細(xì)使用方法與屬性
- PyQt5的PyQtGraph實(shí)踐系列3之實(shí)時(shí)數(shù)據(jù)更新繪制圖形
- PyQt5高級(jí)界面控件之QTableWidget的具體使用方法
- Python PyQt5運(yùn)行程序把輸出信息展示到GUI圖形界面上
- PyQt5 QItemSelection類使用小結(jié)
相關(guān)文章
Python?pyecharts實(shí)時(shí)畫(huà)圖自定義可視化經(jīng)緯度熱力圖
這篇文章主要為大家介紹了Python?pyecharts實(shí)時(shí)畫(huà)圖自定義經(jīng)緯度熱力圖實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06使用Python+Splinter自動(dòng)刷新12306火車(chē)票
一年一度的春運(yùn)又來(lái)了,今年我自己寫(xiě)了個(gè)搶票腳本,下面小編給大家分享使用Python+Splinter自動(dòng)刷新12306火車(chē)票,需要的朋友參考下吧2018-01-01Python實(shí)現(xiàn)考試自動(dòng)答題的腳本分享
最近這段時(shí)間天氣正正好,不冷不熱,是學(xué)習(xí)考駕照的好時(shí)機(jī)。為了幫助大家能夠順利獲得駕照,小編為大家準(zhǔn)備了駕照考試的自動(dòng)答題小程序,希望對(duì)大家有所幫助2023-03-03Python通過(guò)命令提示符安裝matplotlib
這篇文章主要給大家介紹了關(guān)于Python通過(guò)命令提示符安裝matplotlib的相關(guān)資料,文中還介紹了離線安裝這一種方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-11-11Django集成celery發(fā)送異步郵件實(shí)例
今天小編就為大家分享一篇Django集成celery發(fā)送異步郵件實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12Python警察與小偷的實(shí)現(xiàn)之一客戶端與服務(wù)端通信實(shí)例
這篇文章主要介紹了Python警察與小偷的實(shí)現(xiàn)之一客戶端與服務(wù)端通信實(shí)例,并附有難點(diǎn)及易錯(cuò)點(diǎn)的分析與說(shuō)明,需要的朋友可以參考下2014-10-10Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)實(shí)現(xiàn)優(yōu)先級(jí)隊(duì)列的方法示例
這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)實(shí)現(xiàn)優(yōu)先級(jí)隊(duì)列的方法,結(jié)合實(shí)例形式分析了Python中基于給定優(yōu)先級(jí)進(jìn)行隊(duì)列元素排序的相關(guān)操作技巧,需要的朋友可以參考下2018-02-02Python基于Tkinter模塊實(shí)現(xiàn)的彈球小游戲
這篇文章主要介紹了Python基于Tkinter模塊實(shí)現(xiàn)的彈球小游戲,涉及Python圖形繪制、數(shù)值計(jì)算、判斷等相關(guān)操作技巧,需要的朋友可以參考下2018-12-12