小编use*_*783的帖子

pyqt5 - 关闭/终止应用程序

我正在使用这里发现的pyqt5教程Zetcode,PyQt5

作为我自己的练习,我正在尝试扩展一个示例,以便无论用于关闭应用程序的方法如何,我都会看到相同的对话框消息框:

  • 单击标题栏中的"X"按钮(按预期工作)
  • 单击"关闭"按钮(产生属性错误)
  • 按"退出"键(工作但不确定如何/为什么)

对话框消息框在closeEvent方法中实现,最后提供完整脚本.

我有两个问题:

1.单击"关闭"按钮时,我想调用closeEvent包括消息框对话框的方法,而不是仅仅退出.

我已经为"关闭"按钮替换了一行示例代码:

btn.clicked.connect(QCoreApplication.instance().quit)
Run Code Online (Sandbox Code Playgroud)

而是试图调用closeEvent已经实现我想要的对话框的方法:

btn.clicked.connect(self.closeEvent)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行脚本并单击"关闭"按钮并在对话框中选择生成的"关闭"选项时,我得到以下内容:

Traceback (most recent call last):
File "5-terminator.py", line 41, in closeEvent
    event.accept()
AttributeError: 'bool' object has no attribute 'accept'
Aborted
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议我做错了什么,需要做什么?

2.当以某种方式点击转义键时,会显示消息框对话框并且工作正常.

好的,它的功能很棒,但是我想知道CloseEvent方法中定义的消息框功能是如何以及为什么在方法中调用的keyPressEvent.

完整脚本如下:

import sys
from PyQt5.QtWidgets import (
    QApplication, QWidget, QToolTip, QPushButton, QMessageBox)
from PyQt5.QtCore import QCoreApplication, Qt


class Window(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        btn = QPushButton("Close", self)
        btn.setToolTip("Close Application")
        # btn.clicked.connect(QCoreApplication.instance().quit) …
Run Code Online (Sandbox Code Playgroud)

python messagebox exit terminate pyqt5

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

exit ×1

messagebox ×1

pyqt5 ×1

python ×1

terminate ×1