wxPython in Action (EVT_CLOSE)当关闭一个框架时都发生了什么?

wxWidgets随笔(10)-wxApp类 当wxUSE_GUI=1时,wxApp类表示应用程序本身。 除了wxAppConsole提供的功能外,它还跟踪顶部窗口(请参阅SetTopWindow())并增加对视频模式的支持(请参阅SetVideoMode())。 一般来说,只有gui的应用程序范围的设置可以从wxApp(或从wxSystemSettings或wxSystemOptions类)访问。 该类发出的事件 这个类发出的事件宏: E... 阅读详情
 当你关闭一个框架时,它最终消失了。除非这个框架被明确地告诉不关闭。换句话说,那关闭不是直接了当的。在wxPython的窗口部件关闭体系之后的用意是,给正在关闭的窗口部件充足的机会来关闭或释放它所占用任何非wxPython资源。如果你占用了某种昂贵的外部资源,如一个大的数据结构或一个数据库连接,那么该意图是特别受欢迎的。

诚然,在C++ wxWidgets世界里,由于C++不为你管理内在分配的清理工作,管理资源是更严肃的问题。在wxPython中,对于多步的关闭过程的显式需求就很少,但它对于在过程中使用额外的钩子仍然是有用的。(随便说一下,我们在这一节中从单词“框架”切换到单词“窗口部件”是故意的——因为在本节中的所有内容都适用于所有顶级窗口部件,如框架或对话框)。

何时用户触发关闭过程

关闭过程最常由用户触发,如敲击一个关闭框或选择系统菜单中的关闭项或当应用程序响应其它某个事件而调用框架的Close方法。当上述情况发生时,wxPython架构引发一个EVT_CLOSE事件。像wxPython 架构中的其它别的事件一样,你可以在绑定一个事件处理器以便一个EVT_CLOSE事件发生时调用。

如果你不声明你自己的事件处理器,那么默认的行为将被调用。默认的行为对于框架和对话框是不同的。

1、默认情况下,框架处理器调用Destroy()方法并删除该框架和它的所有的组件。

2、默认情况下,对话框的关闭处理器不销毁该对话框——它仅仅模拟取消按钮的按下,并隐藏对话框。该对话框对象仍继续存在在内存中。因此,如果需要的话,应用程序可以从它的数据输入部件获取值。当应用程序完成了对对话框的使用后,应该调用对话框的Destroy()方法。

如果你编写你自己的关闭处理器,那么你可以使用它来关闭或删除任何外部的资源,但是,如果你选择去删除框架的话,显式地调用Destroy()方法是你的责任。尽管Destroy()经常被Close()调用,但是只调用Close()方法不能保证框架的销毁。在一定的情形下,决定不销毁框架是完全可以的,如当用户取消了关闭。然而,你仍然需要一个方法来销毁该框架。如果你选择不去销毁窗口,那么调用关闭事件的wx.CloseEvent.Veto()方法来通知相关部分:框架拒绝关闭,是一个好的习惯。

如果你选择在你的程序的别处而非关闭处理器中关闭你的框架,例如从一个不同的用户事件像一个菜单项,那么我们建议使用的机制是调用框架的Close()方法。这将启动一个和系统关闭行为相同的过程。如果你要确保框架一定被删除,那么你可以直接调用Destroy()方法;然而,如果你这样做了,可能会导致框架所管理的资源或数据没有被释放或保存。

什么时候系统触发关闭过程

如果关闭事件是由系统自己触发的,对于系统关闭或类似情况,你也有一种办法管理该事件。wx.App 类接受一个EVT_QUERY_END_SESSION事件,如果需要的话,该事件使你能够否决应用程序的关闭,如果所有运行的应用已经批准了系统或GUI环境的关闭的话,那么随后会有一个EVT_END_SESSION事件。你选择去否决关闭的行为是与依赖于具体系统的。

最后,值得注意的是,调用一个窗口部件的Destroy()方法不意味该部件被立即销毁。销毁实际上是当事件循环在未来空闲时(任何未被处理的事件被处理之后)才被处理的。这就防止了处理已不存在的窗口部件的事件。
手把手教你用Verilog实现MDIO控制器(附完整VHDL代码对比) 本文详细介绍了如何使用Verilog实现MDIO控制器,并提供了与VHDL实现的深度对比。通过解析MDIO协议核心要点,展示Verilog状态机架构设计和关键时序控制逻辑,同时对比VHDL在信号声明、状态机实现和双向端口处理上的差异。适用于以太网硬件设计开发者,帮助掌握MDIO控制器自主实现能力。 阅读详情

相关推荐

超详细版risc-v五级流水线cpu硬件设计实现解析

深入剖析risc-v五级流水线cpu的硬件架构与设计细节,涵盖指令流程、模块划分与关键时序控制,帮助理解risc-v五级流水线cpu的工作机制与优化策略。

weixin_42437253的博客 1630

wxpython关闭窗口_wxpython入门第三步(事件)

wxPython中的事件事件是每个GUI应用程序不可缺少的一部分。所有GUI应用程序都是事件驱动的。一个应用程序对在其生命周期中产生的不同事件类型做出反应。事件主要由应用程序的用户产生。但它们也可以通过其他方式产生,例如互联网连接、窗口管理器或定时器。所以当我们调用MainLoop()方法时,我们的应用程序会等待事件的产生。当我们退出应用程序时,MainLoop()方法就结束了。定义事件是来自底层...

weixin_39734020的博客 2442

YOLOv8损失函数升级:从CIoU到Wise-IoU v3的实战调优与避坑指南

本文详细介绍了如何将YOLOv8的损失函数从CIoU升级到Wise-IoU v3,以提升目标检测性能,特别是在小目标检测和样本不均衡场景下的表现。通过实战调优步骤和避坑指南,帮助开发者有效应用Wise-IoU v3的动态聚焦机制和单调性控制,显著提升模型精度和训练稳定性。

weixin_33737774的博客 590

wxpython 无法退出

http://blog.youkuaiyun.com/xugangjava/article/details/8294716 ShowModal的原理 在主event loop中插入一个循环 来拦截 主窗口事件,当模态对话框退出时,取消这个循环,主窗口继续响应时间。 现在程序中开启了一个模态对话框,然后后台一个Timer要求退出程序,或者点击右下角退出程序 点击右下角退出,或者后台t

xugangjava的专栏 3548

最新版 Akamai 逆向 风控破解

经过测试,捷星 jetstar.com,德州仪器 ti.com,w6 wizzair.com,还有一些航空公司的都是可以实现一个并发的有需要的可以。

m0_72605044的博客 6617

自定义配方画面的具体方法示例 - 嵌入式

自定义配方画面的具体方法示例 - 嵌入式在TIA博途WinCC中,您可以通过编程来创建自定义配方画面。这些画面可以用于显示和编辑您的嵌入式系统中的配方参数。下面是一个示例,展示了如何在WinCC中实现自定义配方画面的方法。首先,您需要创建一个新的画面,并添加必要的控件来显示和编辑配方参数。在WinCC中,您可以使用文本框、按钮和标签等控件来实现这一目的。以下是一个简单的示例,展示了如何创建一个具有文本框和按钮的配方画面:创建新画面:添加控件:编辑控件属性:编写脚本: 在这个示例中,我们定义了两个变量和来存储

CyberBytezZ的博客 1034

wxpython入门第三步(事件)

wxPython中的事件 事件是每个GUI应用程序不可缺少的一部分。所有GUI应用程序都是事件驱动的。一个应用程序对在其生命周期中产生的不同事件类型做出反应。事件主要由应用程序的用户产生。但它们也可以通过其他方式产生,例如互联网连接、窗口管理器或定时器。所以当我们调用MainLoop()方法时,我们的应用程序会等待事件的产生。当我们退出应用程序时,MainLoop()方法就结束了。 定义 事件是来自底层框架的一段应用级信息,通常是GUI工具包。事件循环是一种编程结构,它在程序中等待并派发事件或消息。事件循环

weixin_42161954的博客 826

前言:为什么要学习爬虫和逆向,该如何学习?

学习爬虫和逆向技术是当今数字化时代的重要技能,尤其在数据分析、安全研究、自动化工具开发等领域有广泛应用。以下是详细的学习理由、路径和方法:

数据知道的博客 1万+

wxpython event事件_wxpython 教程 (五): 事件 | wxPython 事件 处理 绑定 | 教程推荐 | 老土译站...

事件是每个 GUI 应用所必须的组成部分,所有的 GUI 应用都是事件驱动的。在应用的生命周期内,需要对各种不同类型的时间做出反应。事件主要来自于应用用户的操作触发,但也可以来源于其他方式:网络连接、窗口管理、定时器等。在应用一开始,我们调用MainLoop()函数,这使得应用开始等待处理所有将生成的事件,直到我们退出程序。本节,我们将讨论 wxPython 事件 相关知识。事件定义事件(even...

weixin_39844481的博客 1102

RK3588, 绘制中文OSD,实现左右对齐

基于RK3588,实现中文OSD, 上下左右对齐。

J。 661

EtherCAT主站SOEM -- 29 -- STM32F767-SOEM通过 CSP模式(周期同步位置模式)控制一个电机转圈圈

以上就是EtherCAT主站SOEM – 29 – STM32F767-SOEM通过 CSP模式(周期同步位置模式)控制一个电机转圈圈的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。

常驻客栈的博客--嵌入式EtherCAT 2239

wxPython in Action(九十)

10.1.4 如何响应一个菜单事件?在最后这一小节,我们展示两个响应菜单选择的例子代码。像我们在第8章见过的许多窗口部件一样,选择一个菜单项将触发一个特定类型的wx.CommandEvent的一个实例。在此处,该类型是wx.EVT_MENU。菜 单项事件在两个方面与系统中其它的命令事件不同。首先,用于关联菜单项事件与特定回调函数的Bind()函数是在包含菜单栏的框架上的。第二,由于框架通 常有多个

218

git clone出现fatal: unable to access Failed to connect to github.com port 443: Timed out解决方案

本文主要介绍了git clone出现fatal: unable to access Failed to connect to github.com port 443: Timed out解决方案,希望能对使用git的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 23万+

wxPython in Action(六十五)

8.1.4 当关闭一个框架时都发生了什么?当你关闭一个框架时,它最终消失了。除非这个框架被明确 地告诉不关闭。换句话说,那关闭不是直接了当的。在wxPython的窗口部件关闭体系之后的用意是,给正在关闭的窗口部件充足的机会来关闭或释放它所占 用任何非wxPython资源。如果你占用了某种昂贵的外部资源,如一个大的数据结构或一个数据库连接,那么该意图是特别受欢迎的。诚 然,在C++ wxWidget

297

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

wxPython in Action(七)

2.4 如何关闭wxPython应用程序?当你的应用程序的最后的顶级窗口被用户关闭时, wxPython应用程序就退出了。我们这里所说的顶层窗口是指任何没有父亲的框架,并不只是使用SetTopWindow()方法设计的框架。这包括任 何由wxPython自身创建的框架。在我们重定向的例子中,wxPython应用程序在主框架和输出重定向的框架都被关闭后退出,仅管只有主框架是使用 SetTopWind

328

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

2.6 如何为一个框架增加对象和子窗口?[wxPython In Action]

2.6 如何为一个框架增加对象和子窗口?我们已经说明了如何创建wx.Frame对象,但是创建后的是空的。本节我们将介绍在你的框架中插入对象与子窗口的基础,以便与用户交互。2.6.1 给框架增加窗口部件图2.8显示了一个定制的wx.Frame的子类,名为InsertFrame。当点击close按钮时,这个窗口将关闭且应用程序将退出。例2.3定义了子类InsertFrame。例2.3#!/usr/bi...

weixin_30480075的博客 393

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

wxPython in Action(九)

2.6 如何为一个框架增加对象和子窗口?我们已经说明了如何创建wx.Frame对象,但是创建后的是空的。本节我们将介绍在你的框架中插入对象与子窗口的基础,以便与用户交互。2.6.1 给框架增加窗口部件图2.8显示了一个定制的wx.Frame的子类,名为InsertFrame。当点击close按钮时,这个窗口将关闭且应用程序将退出。例2.3定义了子类InsertFrame。例2.3#!/usr/bi

365

使用react框架,ant design中双击事件触发单击事件解决办法

场景: 在进行tag标签的编辑时,需求单击tag表示选中,双击tag进入编辑模式,进行修改。这样如果不做处理,双击会同时触发单击事件,解决思路:设置一个变量,在单击事件中进行延时设置,在双击事件中,直接将单击事件的延时取消,那么就不会触发单击事件。 详细实现思路: 1. 设置varclickTimeChange; 用于单击事件的延时变量。 2. 单击事件的代码如下: handleCheckChange = (tag, index) => { clearTimeo...

zjq_1234的博客 5944

wxpython结束程序_当用户点击框架关闭时如何杀死WxPython应用程序

以下是关闭框架的常规方法:import wx########################################################################class MyFrame(wx.Frame):""""""#----------------------------------------------------------------------def _...

weixin_29053577的博客 578

ETW windows事件跟踪知识学习的愚见

etw模型网上有就不说了,这里主要是几个概念的区分fill:#333;color:#333;color:#333;fill:none;Vista之前Vista之前Vista 引入的新事件模型,统一ETW和Event Logging的APIWIn10基于ETW 的TraceLogging 引入的简化的检测代码的方法Windows事件事件日志记录 Event LoggingWindows 事件跟踪 ETWWindows事件日志 windows-event-log。

qq_31314583的博客 5万+

pythonwx关闭窗口_wxPython:关闭wxPython程序

一、正常关闭wx.App子类的OnExit()方法在最后一个窗口被关闭且在wxPython的内在清理过程之前被调用,所以,可以在OnExit()方法中清理任何创建的非wxPython资源。如果调用了wx.Exit()关闭wxPython程序,OnExit()方法仍会被调用。如果想在所有窗口关闭后wxPython程序仍可继续,可使用wx.App的SetExitOnFrameDelete(flag)方...

weixin_39637260的博客 1453

WIN7/10下如何查看EVT格式操作系统日志

Python解析EVT系统日志

weixin_42925682的博客 1779

wxPython之事件

wxPython 事件Event讲解

阿兵-AI医疗的专栏 1万+

wxPython程序的退出

  # after the last window closes but before wxPython’s internal cleanup.# normal shutdown# wx.App.OnExit()# Even if the application is closed with wx.Exit(), the OnExit() method is stil

Struts 2 的专栏 3308

通过安全日志读取WFP防火墙放行日志

之前的文档中,描写了如何对WFP防火墙进行操作以及如何在防火墙日志中读取被防火墙拦截网络通讯的日志。这边文档,着重描述如何读取操作系统中所有被放行的网络通信行为。读取系统中放行的网络通信行为日志,在win10之后的操作系统上,也可以通过前一篇提到的读取阻断日志的方式进行读取(以FWPM_NET_EVENT0.type字段区分),但是在较老的系统中却不支持直接读取。为了保持系统兼容性,可以通过读取操作系统安全日志(EventId:5156)的方式进行网络通信日志的采集。

m0_61869253的博客 1295
上一篇: 通过wxPython学习wxWindow
下一篇: wxPython frame的布局详细解释
embededvc
博客等级 码龄21年 176粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值