delphi 窗口不获得焦点_PyQt5重写关闭窗口函数实现弹出对话框验证(确定关闭?)...

主要就是重写了一个closeEvent函数达到的效果,

转载自 :

CSDN-专业IT技术社区-登录​blog.csdn.net
# -*- coting: UTF-8 -*-
import sys

from PyQt5 import QtCore
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())

效果:

874324299b7c9ecd650efe2d8163e8a4.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值