Python PyQt5 窗口显示在屏幕中间、关闭窗口、消息框

10 篇文章 0 订阅
# -*- coting: UTF-8 -*-
import sys
from PyQt5.QtWidgets import (QWidget ,QPushButton ,QApplication ,QDesktopWidget , QMessageBox)
from PyQt5.QtCore import QCoreApplication


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

    def initUI(self):
        bt = QPushButton("退出" ,self)
        #按钮的点击事件关联QCoreApplication.instance().quit退出
        bt.clicked.connect(QCoreApplication.instance().quit)
        bt.resize(bt.sizeHint())
        bt.move(50 ,50)

        #窗口显示在屏幕中间
        self.center()
        self.setWindowTitle("quit")
        self.show()

    #显示窗口在屏幕中间
    def center(self):
        #获得窗口
        qr = self.frameGeometry()
        #获得屏幕中心点
        cp = QDesktopWidget().availableGeometry().center()

        #显示到屏幕中心
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    #我们关闭窗口的时候,触发了QCloseEvent。我们需要重写closeEvent()事件处理程序。
    #重写closeEvent函数,使点击右上角的叉号关闭按钮时,弹框提示“Are you sure to quit?”
    def closeEvent(self, event):
        #我们显示一个消息框,两个按钮:“是”和“不是”。第一个字符串出现在titlebar。
        #第二个字符串消息对话框中显示的文本。第三个参数指定按钮的组合出现在对话框中。
        #最后一个参数是默认按钮,这个是默认的按钮焦点。
        reply = QMessageBox.question(self, 'Message',
                                     "Are you sure to quit?", QMessageBox.Yes |
                                     QMessageBox.No, QMessageBox.No)
        #处理返回值,如果单击Yes按钮,关闭小部件并终止应用程序。否则我们忽略关闭事件。
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值