PyQt 的 QMainWindow closeEvent 从未被调用

2024-04-13

我在 python 中使用 pyqt4。
当我关闭 QMainWindow 窗口时,它不被处理closeEvent方法。 请有人告诉我这段代码有什么问题:

from PyQt4 import QtCore, QtGui
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(277, 244)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    def closeEvent(self,event):
        result = QtGui.QMessageBox.question(self,
                      "Confirm Exit...",
                      "Are you sure you want to exit ?",
                      QtGui.QMessageBox.Yes| QtGui.QMessageBox.No)
        event.ignore()

        if result == QtGui.QMessageBox.Yes:
         event.accept()
if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    ui = Ui_MainWindow()

The closeEvent是一种方法QMainwindow,但你试图从你自己的地方使用它Ui_MainWindow班级。试试这个:

from PyQt4 import QtCore, QtGui


class MainWindow(QtGui.QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.setupUi()

    def setupUi(self):
        self.setObjectName("MainWindow")
        self.resize(277, 244)
        self.statusbar = QtGui.QStatusBar()
        self.statusbar.setObjectName("statusbar")
        self.setStatusBar(self.statusbar)

    def closeEvent(self,event):
        result = QtGui.QMessageBox.question(self,
                      "Confirm Exit...",
                      "Are you sure you want to exit ?",
                      QtGui.QMessageBox.Yes| QtGui.QMessageBox.No)
        event.ignore()

        if result == QtGui.QMessageBox.Yes:
            event.accept()

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

如果您想保留尽可能多的结构,请尝试以下操作:

from PyQt4 import QtCore, QtGui


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(277, 244)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        MainWindow.show()


class MyWindow(QtGui.QMainWindow):
    def closeEvent(self,event):
        result = QtGui.QMessageBox.question(self,
                      "Confirm Exit...",
                      "Are you sure you want to exit ?",
                      QtGui.QMessageBox.Yes| QtGui.QMessageBox.No)
        event.ignore()

        if result == QtGui.QMessageBox.Yes:
            event.accept()


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = MyWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    sys.exit(app.exec_())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyQt 的 QMainWindow closeEvent 从未被调用 的相关文章

随机推荐

  • 从现场测试模式复制数据

    我想从 iPhone 现场测试模式中复制一些数据 有什么办法可以做到吗 我正在使用这些数据进行测试 因此不需要 App Store 批准 由于现场测试模式是一个内置应用程序 用于收集手机及其网络上的信息 因此您实际上无法执行任何操作来与其交
  • 如何配置 Eclipse XML 格式?

    我想更改 Eclipse 格式化 XML 文件的方式 例如 如果我在 pom xml 文件中有如下部分
  • W3C 验证器无法处理 RDF/XML

    我正在尝试描述一个非常基本的地铁火车站地图 其中包含站点和时间 这个 RDF 到 Turtle 转换器 http rdf translator appspot com 可以解析我的 XML 但 W3C 验证器抛出 Error Your do
  • 在 R 中快速计算 > 10^6 余弦向量相似度

    我得到了约 1600 个文档 x 约 120 个单词的文档术语矩阵 我想计算所有这些向量之间的余弦相似度 但我们正在谈论约 1 300 000 次比较 n n 1 2 我使用了 parallel mclapply 和 8 但它仍然需要很长时
  • 我什么时候应该在 ColdFusion 中使用#?

    这是教授新人 ColdFusion 的最大障碍之一 何时使用 充其量是不明确的 由于使用它们通常不会产生问题 因此大多数人似乎倾向于过度使用它们 那么 基本规则是什么 我认为说哪里不使用 可能更容易 唯一的地方是在 cfif 语句和 cfs
  • MySQLClient 无法在装有最新版本 Big Sur 的 Macbook Pro M1 上通过 pip 安装

    在确保自制软件可以在其上运行后 我刚刚购买了一台带有 M1 芯片的新 Macbook Pro 我可以 pip 安装除 mysqlclient 之外的任何其他库 并且通过自制程序安装它没有问题 所以我想从下面的错误消息中看出 这是 mysql
  • 通过 HTTP 替代方案访问 JMX

    我们使用 MX4J 通过容器本身的 Web 界面访问 JMX 相关操作 属性 我想知道是否有可用的替代方案 因为 MX4J 的最后一个服务版本是在 2006 年 我基本上希望克服 MX4J 在处理集合方面的限制 I was 实验 http
  • 如何在 Linux 中以编程方式反转屏幕颜色

    例如 在 Ubuntu 中 您可以使用 Super M 反转屏幕颜色 需要桌面效果 请参阅 1 其他操作系统也有类似的功能 尽管我并不真正关心 Linux 以外的任何操作系统 如果我想编写一个在运行时反转屏幕颜色的简单程序 我应该考虑哪个
  • 如何将字符串中每个单词的第一个字母大写?

    s the brown fox 在这里做点什么 s应该 The Brown Fox 做到这一点最简单的方法是什么 The title http docs python org library stdtypes html str title字
  • VBS 脚本查找特定扩展名的所有文件并将它们复制到特定目的地

    我正在制作一个项目 通过创建一个脚本来在工作中使用来自动化我们的一个流程 我希望脚本检查用户名的输入 以搜索指定的用户配置文件路径中的任何 doc docx pdf pst 等文件 并将它们按原样复制到网络驱动器位置上创建的文件夹中 我的主
  • Grails 2抽象域继承问题

    当在 Grails 中使用抽象 或非抽象 继承时 以下内容对我不起作用 很快 我的继承如下 abstract BaseClass SomeClass extends BaseClass SomeOtherClass extends Base
  • Cordova iOS 启动 comgooglemaps 失败

    我有一个小问题 我使用 comgooglemaps 方案来调用谷歌地图并执行搜索 这工作正常 但问题是如果用户没有安装谷歌地图 现在 我如何检查这一点以及是否未安装谷歌地图以通过浏览器调用谷歌 或者调用用户使用的其他地图应用程序 Thanx
  • 使用 group_by(多个变量)时的 dplyr 问题

    我想开始使用 dplyr 代替 ddply 但我无法了解它是如何工作的 我已阅读文档 例如 为什么当我尝试 mutate 时 group by 函数无法按预期工作 看看mtcar 图书馆 车 假设我制作了一个 data frame 它是 m
  • UITableview 中的 UItextView,自动更正气泡不可见

    我有一个带有自定义单元格的 UITableView 每个单元格包含一个 UITextView 并且当用户在 TextView 中键入文本时 单元格会调整大小 我的问题是 当用户位于 TextView 自动更正第一行时 当前单元格中将看不到气
  • 将 HTML 类/ID 添加到 Google 地图标记 (API V3)

    如何向 Google Maps API V3 标记添加类或 ID 我希望能够使用 jQuery 访问标记 编辑 嗨 clarkf 感谢您的回复 使用 Firebug 在检查我的地图时我无法看到这些类 但我确实注意到有两个 div 一种用于图
  • 在页面重新加载时传递 $_GET 参数[重复]

    这个问题在这里已经有答案了 我试图做到这一点 以便当页面重新加载时 它使用与上一页相同的 GET 参数来重定向我 现在我正在尝试使用标头来实现此目的 但是当我提交表单时 变量 id 为空 HTML 表单
  • 为什么 Elastic Load Balancing 报告“停止服务”?

    我正在尝试设置弹性负载均衡 ELB http aws amazon com elasticloadbalancing 在AWS中用于在多个实例之间拆分请求 我基于相同的 AMI 创建了多个网络服务器镜像 并且我能够单独 ssh 进入每个镜像
  • Windows 批处理 FOR 命令制表符分隔符

    我正在尝试使用 Windows 批处理FOR命令 http www microsoft com resources documentation windows xp all proddocs en us for mspx mfr true
  • 使用 junit @Rule、expectCause() 和 hamcrest 匹配器

    我有一个测试 Rule public ExpectedException thrown ExpectedException none Test public void testMethod final String error error
  • PyQt 的 QMainWindow closeEvent 从未被调用

    我在 python 中使用 pyqt4 当我关闭 QMainWindow 窗口时 它不被处理closeEvent方法 请有人告诉我这段代码有什么问题 from PyQt4 import QtCore QtGui class Ui MainW