Close, Exit, and Destroy?

This is sort of a two-questions-in-one deal. First off, if I create an "Exit" menu item in my menu, and then bind it like this:

···

-------
self.frame.Bind(wx.EVT_MENU, self.OnExitApp, id=xrc.XRCID('exit'))

def OnExitApp(self, event):
     self.frame.Close()
-------

Does this trigger a different event than clicking the red "X" to close the application? Looking through Robin's book, that seems to be a wx.EVT_CLOSE event instead of the above.

So my questions:

1. How do I ensure that clicking the "X" and choosing the "Exit" menu item will do the same thing?

2. What's the difference between the Close, Exit, and Destroy methods? Which should I use when closing my application?

Thanks.

Hi John,

self.frame.Bind(wx.EVT_MENU, self.OnExitApp, id=xrc.XRCID(‘exit’))

def OnExitApp(self, event):

self.frame.Close()

  1. How do I ensure that clicking the “X” and choosing the “Exit” menu
    item will do the same thing?

You can simply do that:

self.frame.Bind(wx.EVT_CLOSE, self.OnExitApp)

And now the close event and your menu event will give you the same “answer” (i.e., same method is called).

  1. What’s the difference between the Close, Exit, and Destroy methods?
    Which should I use when closing my application?

Uhm, as far as I know wx.Frame class has no “Exit” method. However, for the other two, the wxWidgets manual offers you some help:

Note that calling Close does not guarantee that the window will be destroyed; but it provides a way to simulate a manual close of a window, which may or may not be implemented by destroying the window.”

So, to forcibly destroy your main frame, simply call:

self.frame.Destroy()

HTH.

···

Andrea.

“Imagination Is The Only Weapon In The War Against Reality.”

http://xoomer.virgilio.it/infinity77/

John Salerno wrote:

This is sort of a two-questions-in-one deal. First off, if I create an "Exit" menu item in my menu, and then bind it like this:

-------
self.frame.Bind(wx.EVT_MENU, self.OnExitApp, id=xrc.XRCID('exit'))

def OnExitApp(self, event):
    self.frame.Close()
-------

Does this trigger a different event than clicking the red "X" to close the application? Looking through Robin's book, that seems to be a wx.EVT_CLOSE event instead of the above.

So my questions:

1. How do I ensure that clicking the "X" and choosing the "Exit" menu item will do the same thing?

Basically. Your exit menu item's handler calls the Close method, which tells the frame to close itself. That is also what the "X" frame decoration does, and both of them result in a EVT_CLOSE event.

2. What's the difference between the Close, Exit, and Destroy methods? Which should I use when closing my application?

I assume that by "Exit" here you are still talking about the menu item above. In that case it is just that, a menu event. You could just as easily have a "Exit" menu that opens a file.

You use Close() when you want to programatically tell the frame to go close itself, and is functionally the same as the user telling it to close itself with the "X" button.

Destroy() tells wx to delete the C++ object instance that corresponds to the frame. Normally it will destroy itself when it closes in the default EVT_CLOSE event handler, but if you catch the EVT_CLOSE yourself you either need to call Destroy in your handler, or call event.Skip so the default handler will still run. The EVT_CLOSE handler is where you would normally put the code that checks for open files, asks the user if she wants to save them or cancel, etc. Based on the user's response you can veto the close if you want.

···

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

Robin Dunn wrote:

I assume that by "Exit" here you are still talking about the menu item above.

No, I was referring to wx.Exit, which I think is a global call.

You use Close() when you want to programatically tell the frame to go close itself, and is functionally the same as the user telling it to close itself with the "X" button.

Destroy() tells wx to delete the C++ object instance that corresponds to the frame. Normally it will destroy itself when it closes in the default EVT_CLOSE event handler, but if you catch the EVT_CLOSE yourself you either need to call Destroy in your handler, or call event.Skip so the default handler will still run. The EVT_CLOSE handler is where you would normally put the code that checks for open files, asks the user if she wants to save them or cancel, etc. Based on the user's response you can veto the close if you want.

I don't understand. So Close() does nothing more than make the window disappear? Does Close() then automatically call Destroy()? What happens if I catch the wx.EVT_CLOSE event and make it call self.frame.Close()? Does it get destroyed also, or is the application still running somehow?

According to you and Andrea, I think this is what I need:

self.frame.Bind(wx.EVT_CLOSE, self.OnExitApp)

def OnExitApp(self, event):
     self.frame.Destroy()

Right? Or do I just use Close() still?

I'm using XP and python 2.5.
Just installed the latest wxPyhon 2.7
for python 2.5 with ansi.

I'm going through the docs demo...
looking/ learning, and the application reliably
crashes
with the grid demo. hope this info helps...

"run the wxPython DEMO"-> core windows/controls ->
grid
select demo tab, then pick a button.

"simple wx.Grid, catching all events"

popup, "pythonw.exe has encountered a problem and
needs to close. We are sorry for the inconvenience."
for more info, click here:

Error signature:
AppName: pythonw.exe
AppVer: 0.0.0.0
ModName: python25.dll
ModVer: 2.5.150.1013
Offset: 00095bcd

The instruction at "0x1e095bcd" referenced memory at
"0x00000001". The memory could not be "read".
Click on OK to terminate the program.

<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="pythonw.exe"
FILTER="GRABMI_FILTER_PRIVACY">
    <MATCHING_FILE NAME="msvcp71.dll" SIZE="499712"
CHECKSUM="0x961BEC37" BIN_FILE_VERSION="7.10.3077.0"
BIN_PRODUCT_VERSION="7.10.3077.0"
PRODUCT_VERSION="7.10.3077.0"
FILE_DESCRIPTION="Microsoft® C++ Runtime Library"
COMPANY_NAME="Microsoft Corporation"
PRODUCT_NAME="Microsoft® Visual Studio .NET"
FILE_VERSION="7.10.3077.0"
ORIGINAL_FILENAME="MSVCP71.DLL"
INTERNAL_NAME="MSVCP71.DLL" LEGAL_COPYRIGHT="©
Microsoft Corporation. All rights reserved."
VERFILEDATEHI="0x0" VERFILEDATELO="0x0"
VERFILEOS="0x40004" VERFILETYPE="0x2"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x8657E"
LINKER_VERSION="0x0"
UPTO_BIN_FILE_VERSION="7.10.3077.0"
UPTO_BIN_PRODUCT_VERSION="7.10.3077.0"
LINK_DATE="03/19/2003 04:14:51"
UPTO_LINK_DATE="03/19/2003 04:14:51"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE NAME="msvcr71.dll" SIZE="348160"
CHECKSUM="0x448A147E" BIN_FILE_VERSION="7.10.3052.4"
BIN_PRODUCT_VERSION="7.10.3052.4"
PRODUCT_VERSION="7.10.3052.4"
FILE_DESCRIPTION="Microsoft® C Runtime Library"
COMPANY_NAME="Microsoft Corporation"
PRODUCT_NAME="Microsoft® Visual Studio .NET"
FILE_VERSION="7.10.3052.4"
ORIGINAL_FILENAME="MSVCR71.DLL"
INTERNAL_NAME="MSVCR71.DLL" LEGAL_COPYRIGHT="©
Microsoft Corporation. All rights reserved."
VERFILEDATEHI="0x0" VERFILEDATELO="0x0"
VERFILEOS="0x40004" VERFILETYPE="0x2"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x5F1E9"
LINKER_VERSION="0x0"
UPTO_BIN_FILE_VERSION="7.10.3052.4"
UPTO_BIN_PRODUCT_VERSION="7.10.3052.4"
LINK_DATE="02/21/2003 12:42:20"
UPTO_LINK_DATE="02/21/2003 12:42:20"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE NAME="python.exe" SIZE="24064"
CHECKSUM="0x24BB2C18" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="09/19/2006 07:52:25"
UPTO_LINK_DATE="09/19/2006 07:52:25" />
    <MATCHING_FILE NAME="pythonw.exe" SIZE="24576"
CHECKSUM="0xBFF80E86" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="09/19/2006 07:52:34"
UPTO_LINK_DATE="09/19/2006 07:52:34" />
    <MATCHING_FILE NAME="RemoveMySQL-python.exe.exe"
SIZE="61440" CHECKSUM="0x538175D5" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="02/03/2005 20:46:47"
UPTO_LINK_DATE="02/03/2005 20:46:47" />
    <MATCHING_FILE NAME="Removenumpy.exe" SIZE="61440"
CHECKSUM="0x538175D5" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="02/03/2005 20:46:47"
UPTO_LINK_DATE="02/03/2005 20:46:47" />
    <MATCHING_FILE NAME="RemovePIL.exe" SIZE="61440"
CHECKSUM="0x538175D5" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="02/03/2005 20:46:47"
UPTO_LINK_DATE="02/03/2005 20:46:47" />
    <MATCHING_FILE NAME="Removepyserial.exe"
SIZE="61440" CHECKSUM="0x6DF43BB9" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="07/19/2004 10:05:23"
UPTO_LINK_DATE="07/19/2004 10:05:23" />
    <MATCHING_FILE NAME="RemovePythonCard.exe"
SIZE="61440" CHECKSUM="0x916D9F80" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="02/03/2005 20:41:15"
UPTO_LINK_DATE="02/03/2005 20:41:15" />
    <MATCHING_FILE NAME="Removepywin32.exe"
SIZE="61440" CHECKSUM="0x538175D5" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="02/03/2005 20:46:47"
UPTO_LINK_DATE="02/03/2005 20:46:47" />
    <MATCHING_FILE NAME="w9xpopen.exe" SIZE="4608"
CHECKSUM="0xF6BCA328" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="09/19/2006 07:52:25"
UPTO_LINK_DATE="09/19/2006 07:52:25" />
    <MATCHING_FILE NAME="DLLs\sqlite3.dll"
SIZE="260096" CHECKSUM="0x7DB98CF1"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x0"
LINKER_VERSION="0x10000" LINK_DATE="02/11/2006
02:10:31" UPTO_LINK_DATE="02/11/2006 02:10:31" />
    <MATCHING_FILE NAME="DLLs\tcl84.dll" SIZE="576000"
CHECKSUM="0x9596D17A" BIN_FILE_VERSION="8.4.2.12"
BIN_PRODUCT_VERSION="8.4.2.12"
PRODUCT_VERSION="8.4.12" FILE_DESCRIPTION="Tcl DLL"
COMPANY_NAME="ActiveState Corporation"
PRODUCT_NAME="Tcl 8.4 for Windows"
FILE_VERSION="8.4.12" ORIGINAL_FILENAME="tcl84.dll"
LEGAL_COPYRIGHT="Copyright © 2001 by ActiveState
Corporation, et al" VERFILEDATEHI="0x0"
VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x9C3D6"
LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.4.2.12"
UPTO_BIN_PRODUCT_VERSION="8.4.2.12"
LINK_DATE="03/27/2006 15:22:59"
UPTO_LINK_DATE="03/27/2006 15:22:59"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE NAME="DLLs\tclpip84.dll"
SIZE="5120" CHECKSUM="0xB489B43B" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x1013F" LINKER_VERSION="0x0"
LINK_DATE="03/27/2006 15:22:59"
UPTO_LINK_DATE="03/27/2006 15:22:59" />
    <MATCHING_FILE NAME="DLLs\tk84.dll" SIZE="1038848"
CHECKSUM="0xBFD75423" BIN_FILE_VERSION="8.4.2.12"
BIN_PRODUCT_VERSION="8.4.2.12"
PRODUCT_VERSION="8.4.12" FILE_DESCRIPTION="Tk DLL"
COMPANY_NAME="ActiveState Corporation"
PRODUCT_NAME="Tk 8.4 for Windows"
FILE_VERSION="8.4.12" ORIGINAL_FILENAME="tk84.dll"
LEGAL_COPYRIGHT="Copyright © 2001 by ActiveState
Corporation, et al" VERFILEDATEHI="0x0"
VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x106AF9"
LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="8.4.2.12"
UPTO_BIN_PRODUCT_VERSION="8.4.2.12"
LINK_DATE="03/27/2006 15:44:07"
UPTO_LINK_DATE="03/27/2006 15:44:07"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE
NAME="Lib\distutils\command\wininst-6.exe"
SIZE="61440" CHECKSUM="0xF0A3B1E4" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="02/03/2005 20:37:43"
UPTO_LINK_DATE="02/03/2005 20:37:43" />
    <MATCHING_FILE
NAME="Lib\distutils\command\wininst-7.1.exe"
SIZE="61440" CHECKSUM="0x538175D5" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="02/03/2005 20:46:47"
UPTO_LINK_DATE="02/03/2005 20:46:47" />
    <MATCHING_FILE
NAME="Lib\site-packages\isapi\PyISAPI_loader.dll"
SIZE="40960" CHECKSUM="0x5C067EE2"
BIN_FILE_VERSION="2.5.210.0"
BIN_PRODUCT_VERSION="2.5.210.0"
PRODUCT_VERSION="2.5.210.0" FILE_DESCRIPTION=""
COMPANY_NAME="" PRODUCT_NAME="PyWin32"
FILE_VERSION="2.5.210.0"
ORIGINAL_FILENAME="PyISAPI_loader.dll"
INTERNAL_NAME="PyISAPI_loader.dll" LEGAL_COPYRIGHT=""
VERFILEDATEHI="0x0" VERFILEDATELO="0x0"
VERFILEOS="0x40004" VERFILETYPE="0x2"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x0"
LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="2.5.210.0"
UPTO_BIN_PRODUCT_VERSION="2.5.210.0"
LINK_DATE="09/22/2006 15:34:27"
UPTO_LINK_DATE="09/22/2006 15:34:27"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE
NAME="Lib\site-packages\pythonwin\Pythonwin.exe"
SIZE="15360" CHECKSUM="0x62FF0184"
BIN_FILE_VERSION="2.5.210.0"
BIN_PRODUCT_VERSION="2.5.210.0"
PRODUCT_VERSION="2.5.210.0" FILE_DESCRIPTION=""
COMPANY_NAME="" PRODUCT_NAME="PyWin32"
FILE_VERSION="2.5.210.0"
ORIGINAL_FILENAME="Pythonwin.exe"
INTERNAL_NAME="Pythonwin.exe" LEGAL_COPYRIGHT=""
VERFILEDATEHI="0x0" VERFILEDATELO="0x0"
VERFILEOS="0x40004" VERFILETYPE="0x1"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x0"
LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="2.5.210.0"
UPTO_BIN_PRODUCT_VERSION="2.5.210.0"
LINK_DATE="09/22/2006 15:34:36"
UPTO_LINK_DATE="09/22/2006 15:34:36"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE
NAME="Lib\site-packages\pythonwin\scintilla.dll"
SIZE="247808" CHECKSUM="0xA219BADB"
BIN_FILE_VERSION="1.5.6.0"
BIN_PRODUCT_VERSION="1.5.6.0" PRODUCT_VERSION="1.56"
FILE_DESCRIPTION="Scintilla.DLL - a Source Editing
Component" COMPANY_NAME="Neil Hodgson
neilh@scintilla.org" PRODUCT_NAME="Scintilla"
FILE_VERSION="1.56" ORIGINAL_FILENAME="Scintilla.DLL"
INTERNAL_NAME="Scintilla" LEGAL_COPYRIGHT="Copyright
1998-2003 by Neil Hodgson" VERFILEDATEHI="0x0"
VERFILEDATELO="0x0" VERFILEOS="0x40004"
VERFILETYPE="0x1" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
UPTO_BIN_FILE_VERSION="1.5.6.0"
UPTO_BIN_PRODUCT_VERSION="1.5.6.0"
LINK_DATE="09/22/2006 15:35:09"
UPTO_LINK_DATE="09/22/2006 15:35:09"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE
NAME="Lib\site-packages\pywin32_system32\pythoncom25.dll"
SIZE="327680" CHECKSUM="0xC1DE1AB4"
BIN_FILE_VERSION="2.5.210.0"
BIN_PRODUCT_VERSION="2.5.210.0"
PRODUCT_VERSION="2.5.210.0" FILE_DESCRIPTION=""
COMPANY_NAME="" PRODUCT_NAME="PyWin32"
FILE_VERSION="2.5.210.0"
ORIGINAL_FILENAME="pythoncom25.dll"
INTERNAL_NAME="pythoncom25.dll" LEGAL_COPYRIGHT=""
VERFILEDATEHI="0x0" VERFILEDATELO="0x0"
VERFILEOS="0x40004" VERFILETYPE="0x2"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x0"
LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="2.5.210.0"
UPTO_BIN_PRODUCT_VERSION="2.5.210.0"
LINK_DATE="09/22/2006 15:30:22"
UPTO_LINK_DATE="09/22/2006 15:30:22"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE
NAME="Lib\site-packages\pywin32_system32\pywintypes25.dll"
SIZE="102400" CHECKSUM="0xBCEB1340"
BIN_FILE_VERSION="2.5.210.0"
BIN_PRODUCT_VERSION="2.5.210.0"
PRODUCT_VERSION="2.5.210.0" FILE_DESCRIPTION=""
COMPANY_NAME="" PRODUCT_NAME="PyWin32"
FILE_VERSION="2.5.210.0"
ORIGINAL_FILENAME="pywintypes25.dll"
INTERNAL_NAME="pywintypes25.dll" LEGAL_COPYRIGHT=""
VERFILEDATEHI="0x0" VERFILEDATELO="0x0"
VERFILEOS="0x40004" VERFILETYPE="0x2"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x0"
LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="2.5.210.0"
UPTO_BIN_PRODUCT_VERSION="2.5.210.0"
LINK_DATE="09/22/2006 15:17:59"
UPTO_LINK_DATE="09/22/2006 15:17:59"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE
NAME="Lib\site-packages\win32\perfmondata.dll"
SIZE="9216" CHECKSUM="0xD3E68D48"
BIN_FILE_VERSION="2.5.210.0"
BIN_PRODUCT_VERSION="2.5.210.0"
PRODUCT_VERSION="2.5.210.0" FILE_DESCRIPTION=""
COMPANY_NAME="" PRODUCT_NAME="PyWin32"
FILE_VERSION="2.5.210.0"
ORIGINAL_FILENAME="perfmondata.dll"
INTERNAL_NAME="perfmondata.dll" LEGAL_COPYRIGHT=""
VERFILEDATEHI="0x0" VERFILEDATELO="0x0"
VERFILEOS="0x40004" VERFILETYPE="0x2"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x0"
LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="2.5.210.0"
UPTO_BIN_PRODUCT_VERSION="2.5.210.0"
LINK_DATE="09/22/2006 15:18:01"
UPTO_LINK_DATE="09/22/2006 15:18:01"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE
NAME="Lib\site-packages\win32\pythonservice.exe"
SIZE="9728" CHECKSUM="0xCBDB99B4"
BIN_FILE_VERSION="2.5.210.0"
BIN_PRODUCT_VERSION="2.5.210.0"
PRODUCT_VERSION="2.5.210.0" FILE_DESCRIPTION=""
COMPANY_NAME="" PRODUCT_NAME="PyWin32"
FILE_VERSION="2.5.210.0"
ORIGINAL_FILENAME="pythonservice.exe"
INTERNAL_NAME="pythonservice.exe" LEGAL_COPYRIGHT=""
VERFILEDATEHI="0x0" VERFILEDATELO="0x0"
VERFILEOS="0x40004" VERFILETYPE="0x1"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x0"
LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="2.5.210.0"
UPTO_BIN_PRODUCT_VERSION="2.5.210.0"
LINK_DATE="09/22/2006 15:34:31"
UPTO_LINK_DATE="09/22/2006 15:34:31"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE
NAME="Lib\site-packages\win32\win32popenWin9x.exe"
SIZE="4608" CHECKSUM="0x655C5705"
BIN_FILE_VERSION="2.5.210.0"
BIN_PRODUCT_VERSION="2.5.210.0"
PRODUCT_VERSION="2.5.210.0" FILE_DESCRIPTION=""
COMPANY_NAME="" PRODUCT_NAME="PyWin32"
FILE_VERSION="2.5.210.0"
ORIGINAL_FILENAME="win32popenWin9x.exe"
INTERNAL_NAME="win32popenWin9x.exe" LEGAL_COPYRIGHT=""
VERFILEDATEHI="0x0" VERFILEDATELO="0x0"
VERFILEOS="0x40004" VERFILETYPE="0x1"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x0"
LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="2.5.210.0"
UPTO_BIN_PRODUCT_VERSION="2.5.210.0"
LINK_DATE="09/22/2006 15:34:29"
UPTO_LINK_DATE="09/22/2006 15:34:29"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE
NAME="Lib\site-packages\wx-2.7.1-msw-ansi\unins000.exe"
SIZE="678682" CHECKSUM="0x3CABCCF3"
BIN_FILE_VERSION="51.43.0.0"
BIN_PRODUCT_VERSION="51.43.0.0" PRODUCT_VERSION=""
FILE_DESCRIPTION="Setup/Uninstall" COMPANY_NAME=""
PRODUCT_NAME="Inno Setup" FILE_VERSION="51.43.0.0"
ORIGINAL_FILENAME="" INTERNAL_NAME=""
LEGAL_COPYRIGHT="Copyright (C) 1997-2006 Jordan
Russell. Portions Copyright (C) 2000-2006 Martijn
Laan." VERFILEDATEHI="0x0" VERFILEDATELO="0x0"
VERFILEOS="0x4" VERFILETYPE="0x1" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
UPTO_BIN_FILE_VERSION="51.43.0.0"
UPTO_BIN_PRODUCT_VERSION="51.43.0.0"
LINK_DATE="06/19/1992 22:22:17"
UPTO_LINK_DATE="06/19/1992 22:22:17"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE NAME="tcl\dde1.2\tcldde12.dll"
SIZE="13312" CHECKSUM="0xB5E1E773" MODULE_TYPE="WIN32"
PE_CHECKSUM="0xDC3F" LINKER_VERSION="0x0"
LINK_DATE="03/27/2006 15:23:00"
UPTO_LINK_DATE="03/27/2006 15:23:00" />
    <MATCHING_FILE NAME="tcl\reg1.1\tclreg11.dll"
SIZE="12800" CHECKSUM="0xF28953E2" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x55EB" LINKER_VERSION="0x0"
LINK_DATE="03/27/2006 15:23:00"
UPTO_LINK_DATE="03/27/2006 15:23:00" />
</EXE>
<EXE NAME="python25.dll"
FILTER="GRABMI_FILTER_THISFILEONLY">
    <MATCHING_FILE NAME="python25.dll" SIZE="2109440"
CHECKSUM="0x8A38AA40" BIN_FILE_VERSION="2.5.150.1013"
BIN_PRODUCT_VERSION="2.5.150.1013"
PRODUCT_VERSION="2.5" FILE_DESCRIPTION="Python Core"
COMPANY_NAME="Python Software Foundation"
PRODUCT_NAME="Python" FILE_VERSION="2.5"
ORIGINAL_FILENAME="python25.dll" INTERNAL_NAME="Python
DLL" LEGAL_COPYRIGHT="Copyright © 2001-2006 Python
Software Foundation. Copyright © 2000 BeOpen.com.
Copyright © 1995-2001 CNRI. Copyright © 1991-1995
SMC." VERFILEDATEHI="0x0" VERFILEDATELO="0x0"
VERFILEOS="0x40004" VERFILETYPE="0x1"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x0"
LINKER_VERSION="0x0"
UPTO_BIN_FILE_VERSION="2.5.150.1013"
UPTO_BIN_PRODUCT_VERSION="2.5.150.1013"
LINK_DATE="09/19/2006 07:52:18"
UPTO_LINK_DATE="09/19/2006 07:52:18"
VER_LANGUAGE="Language Neutral [0x0]" />
</EXE>
<EXE NAME="kernel32.dll"
FILTER="GRABMI_FILTER_THISFILEONLY">
    <MATCHING_FILE NAME="kernel32.dll" SIZE="983552"
CHECKSUM="0x4CE79457" BIN_FILE_VERSION="5.1.2600.2180"
BIN_PRODUCT_VERSION="5.1.2600.2180"
PRODUCT_VERSION="5.1.2600.2180"
FILE_DESCRIPTION="Windows NT BASE API Client DLL"
COMPANY_NAME="Microsoft Corporation"
PRODUCT_NAME="Microsoft® Windows® Operating System"
FILE_VERSION="5.1.2600.2180
(xpsp_sp2_rtm.040803-2158)"
ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32"
LEGAL_COPYRIGHT="© Microsoft Corporation. All rights
reserved." VERFILEDATEHI="0x0" VERFILEDATELO="0x0"
VERFILEOS="0x40004" VERFILETYPE="0x2"
MODULE_TYPE="WIN32" PE_CHECKSUM="0xFF848"
LINKER_VERSION="0x50001"
UPTO_BIN_FILE_VERSION="5.1.2600.2180"
UPTO_BIN_PRODUCT_VERSION="5.1.2600.2180"
LINK_DATE="08/04/2004 07:56:36"
UPTO_LINK_DATE="08/04/2004 07:56:36"
VER_LANGUAGE="English (United States) [0x409]" />
</EXE>
</DATABASE>

hello

···

__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com

The problem seems to manifest when I first use the
Gauge demo, just before the Grid demo.

The Grid demo seems ok if entered first.
But if I enter Gauge, let it run a little bit, then
enter Grid, the crash occurs.

···

--- Kenneth Long <kelong_2000@yahoo.com> wrote:

I'm using XP and python 2.5.
Just installed the latest wxPyhon 2.7
for python 2.5 with ansi.

I'm going through the docs demo...
looking/ learning, and the application reliably
crashes
with the grid demo. hope this info helps...

"run the wxPython DEMO"-> core windows/controls ->
grid
select demo tab, then pick a button.

"simple wx.Grid, catching all events"

popup, "pythonw.exe has encountered a problem and
needs to close. We are sorry for the inconvenience."
for more info, click here:

Error signature:
AppName: pythonw.exe
AppVer: 0.0.0.0
ModName: python25.dll
ModVer: 2.5.150.1013
Offset: 00095bcd

The instruction at "0x1e095bcd" referenced memory at
"0x00000001". The memory could not be "read".
Click on OK to terminate the program.

<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="pythonw.exe"
FILTER="GRABMI_FILTER_PRIVACY">
    <MATCHING_FILE NAME="msvcp71.dll" SIZE="499712"
CHECKSUM="0x961BEC37" BIN_FILE_VERSION="7.10.3077.0"
BIN_PRODUCT_VERSION="7.10.3077.0"
PRODUCT_VERSION="7.10.3077.0"
FILE_DESCRIPTION="Microsoft® C++ Runtime Library"
COMPANY_NAME="Microsoft Corporation"
PRODUCT_NAME="Microsoft® Visual Studio .NET"
FILE_VERSION="7.10.3077.0"
ORIGINAL_FILENAME="MSVCP71.DLL"
INTERNAL_NAME="MSVCP71.DLL" LEGAL_COPYRIGHT="©
Microsoft Corporation. All rights reserved."
VERFILEDATEHI="0x0" VERFILEDATELO="0x0"
VERFILEOS="0x40004" VERFILETYPE="0x2"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x8657E"
LINKER_VERSION="0x0"
UPTO_BIN_FILE_VERSION="7.10.3077.0"
UPTO_BIN_PRODUCT_VERSION="7.10.3077.0"
LINK_DATE="03/19/2003 04:14:51"
UPTO_LINK_DATE="03/19/2003 04:14:51"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE NAME="msvcr71.dll" SIZE="348160"
CHECKSUM="0x448A147E" BIN_FILE_VERSION="7.10.3052.4"
BIN_PRODUCT_VERSION="7.10.3052.4"
PRODUCT_VERSION="7.10.3052.4"
FILE_DESCRIPTION="Microsoft® C Runtime Library"
COMPANY_NAME="Microsoft Corporation"
PRODUCT_NAME="Microsoft® Visual Studio .NET"
FILE_VERSION="7.10.3052.4"
ORIGINAL_FILENAME="MSVCR71.DLL"
INTERNAL_NAME="MSVCR71.DLL" LEGAL_COPYRIGHT="©
Microsoft Corporation. All rights reserved."
VERFILEDATEHI="0x0" VERFILEDATELO="0x0"
VERFILEOS="0x40004" VERFILETYPE="0x2"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x5F1E9"
LINKER_VERSION="0x0"
UPTO_BIN_FILE_VERSION="7.10.3052.4"
UPTO_BIN_PRODUCT_VERSION="7.10.3052.4"
LINK_DATE="02/21/2003 12:42:20"
UPTO_LINK_DATE="02/21/2003 12:42:20"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE NAME="python.exe" SIZE="24064"
CHECKSUM="0x24BB2C18" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="09/19/2006 07:52:25"
UPTO_LINK_DATE="09/19/2006 07:52:25" />
    <MATCHING_FILE NAME="pythonw.exe" SIZE="24576"
CHECKSUM="0xBFF80E86" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="09/19/2006 07:52:34"
UPTO_LINK_DATE="09/19/2006 07:52:34" />
    <MATCHING_FILE NAME="RemoveMySQL-python.exe.exe"
SIZE="61440" CHECKSUM="0x538175D5"
MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="02/03/2005 20:46:47"
UPTO_LINK_DATE="02/03/2005 20:46:47" />
    <MATCHING_FILE NAME="Removenumpy.exe"
SIZE="61440"
CHECKSUM="0x538175D5" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="02/03/2005 20:46:47"
UPTO_LINK_DATE="02/03/2005 20:46:47" />
    <MATCHING_FILE NAME="RemovePIL.exe" SIZE="61440"
CHECKSUM="0x538175D5" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="02/03/2005 20:46:47"
UPTO_LINK_DATE="02/03/2005 20:46:47" />
    <MATCHING_FILE NAME="Removepyserial.exe"
SIZE="61440" CHECKSUM="0x6DF43BB9"
MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="07/19/2004 10:05:23"
UPTO_LINK_DATE="07/19/2004 10:05:23" />
    <MATCHING_FILE NAME="RemovePythonCard.exe"
SIZE="61440" CHECKSUM="0x916D9F80"
MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="02/03/2005 20:41:15"
UPTO_LINK_DATE="02/03/2005 20:41:15" />
    <MATCHING_FILE NAME="Removepywin32.exe"
SIZE="61440" CHECKSUM="0x538175D5"
MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="02/03/2005 20:46:47"
UPTO_LINK_DATE="02/03/2005 20:46:47" />
    <MATCHING_FILE NAME="w9xpopen.exe" SIZE="4608"
CHECKSUM="0xF6BCA328" MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="09/19/2006 07:52:25"
UPTO_LINK_DATE="09/19/2006 07:52:25" />
    <MATCHING_FILE NAME="DLLs\sqlite3.dll"
SIZE="260096" CHECKSUM="0x7DB98CF1"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x0"
LINKER_VERSION="0x10000" LINK_DATE="02/11/2006
02:10:31" UPTO_LINK_DATE="02/11/2006 02:10:31" />
    <MATCHING_FILE NAME="DLLs\tcl84.dll"
SIZE="576000"
CHECKSUM="0x9596D17A" BIN_FILE_VERSION="8.4.2.12"
BIN_PRODUCT_VERSION="8.4.2.12"
PRODUCT_VERSION="8.4.12" FILE_DESCRIPTION="Tcl DLL"
COMPANY_NAME="ActiveState Corporation"
PRODUCT_NAME="Tcl 8.4 for Windows"
FILE_VERSION="8.4.12" ORIGINAL_FILENAME="tcl84.dll"
LEGAL_COPYRIGHT="Copyright © 2001 by ActiveState
Corporation, et al" VERFILEDATEHI="0x0"
VERFILEDATELO="0x0" VERFILEOS="0x4"
VERFILETYPE="0x2"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x9C3D6"
LINKER_VERSION="0x0"
UPTO_BIN_FILE_VERSION="8.4.2.12"
UPTO_BIN_PRODUCT_VERSION="8.4.2.12"
LINK_DATE="03/27/2006 15:22:59"
UPTO_LINK_DATE="03/27/2006 15:22:59"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE NAME="DLLs\tclpip84.dll"
SIZE="5120" CHECKSUM="0xB489B43B"
MODULE_TYPE="WIN32"
PE_CHECKSUM="0x1013F" LINKER_VERSION="0x0"
LINK_DATE="03/27/2006 15:22:59"
UPTO_LINK_DATE="03/27/2006 15:22:59" />
    <MATCHING_FILE NAME="DLLs\tk84.dll"
SIZE="1038848"
CHECKSUM="0xBFD75423" BIN_FILE_VERSION="8.4.2.12"
BIN_PRODUCT_VERSION="8.4.2.12"
PRODUCT_VERSION="8.4.12" FILE_DESCRIPTION="Tk DLL"
COMPANY_NAME="ActiveState Corporation"
PRODUCT_NAME="Tk 8.4 for Windows"
FILE_VERSION="8.4.12" ORIGINAL_FILENAME="tk84.dll"
LEGAL_COPYRIGHT="Copyright © 2001 by ActiveState
Corporation, et al" VERFILEDATEHI="0x0"
VERFILEDATELO="0x0" VERFILEOS="0x4"
VERFILETYPE="0x2"
MODULE_TYPE="WIN32" PE_CHECKSUM="0x106AF9"
LINKER_VERSION="0x0"
UPTO_BIN_FILE_VERSION="8.4.2.12"
UPTO_BIN_PRODUCT_VERSION="8.4.2.12"
LINK_DATE="03/27/2006 15:44:07"
UPTO_LINK_DATE="03/27/2006 15:44:07"
VER_LANGUAGE="English (United States) [0x409]" />
    <MATCHING_FILE
NAME="Lib\distutils\command\wininst-6.exe"
SIZE="61440" CHECKSUM="0xF0A3B1E4"
MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="02/03/2005 20:37:43"
UPTO_LINK_DATE="02/03/2005 20:37:43" />
    <MATCHING_FILE
NAME="Lib\distutils\command\wininst-7.1.exe"
SIZE="61440" CHECKSUM="0x538175D5"
MODULE_TYPE="WIN32"
PE_CHECKSUM="0x0" LINKER_VERSION="0x0"
LINK_DATE="02/03/2005 20:46:47"
UPTO_LINK_DATE="02/03/2005 20:46:47" />
    <MATCHING_FILE
NAME="Lib\site-packages\isapi\PyISAPI_loader.dll"
SIZE="40960" CHECKSUM="0x5C067EE2"
BIN_FILE_VERSION="2.5.210.0"
BIN_PRODUCT_VERSION="2.5.210.0"
PRODUCT_VERSION="2.5.210.0" FILE_DESCRIPTION=""
COMPANY_NAME="" PRODUCT_NAME="PyWin32"
FILE_VERSION="2.5.210.0"
ORIGINAL_FILENAME="PyISAPI_loader.dll"
INTERNAL_NAME="PyISAPI_loader.dll"
LEGAL_COPYRIGHT=""
VERFILEDATEHI="0x0" VERFILEDATELO="0x0"

=== message truncated ===

hello

__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around

I am actually getting a similar error to this in my own application. I can reproduce it reliably and get

Error screen is Microsoft Visual C++ Runtime Library

Assertation failed!

Program C:\Python24\pythonw.exe

File src/helpers.cpp

line: 1558

Expression: PyType_Check(Base)

while running without the console and

AppName: python.exe AppVer: 0.0.0.0 ModName: python24.dll
ModVer: 2.4.3150.1012 Offset: 00025d05

what appears in the console is a random DC error, similar to the following, the shows up when it tries to redraw the window after I have moved the error message and clicked back to the window. The console error does not happen until that point which tells me its only happening because the error killed some processes but I figured I would include it just in case

File “C:\Python24\Lib\site-packages\wx-2.7.1-msw-ansi\wx_gdi.py”, line 427, in init
gdi.Brush_swiginit(self,gdi.new_Brush(*args, **kwargs))
TypeError: Expected a wxColour object, a string containing a colour name or ‘#RRGGBB’, or a 3- or 4-tuple of integers.

<?xml version="1.0" encoding="UTF-16"?>
<MATCHING_FILE NAME="msvcp71.dll" SIZE="499712" CHECKSUM="0x961BEC37" BIN_FILE_VERSION="7.10.3077.0" BIN_PRODUCT_VERSION="7.10.3077.0" PRODUCT_VERSION="7.10.3077.0

" FILE_DESCRIPTION=“Microsoft® C++ Runtime Library” COMPANY_NAME=“Microsoft Corporation” PRODUCT_NAME=“Microsoft® Visual Studio .NET” FILE_VERSION=“7.10.3077.0” ORIGINAL_FILENAME="
MSVCP71.DLL" INTERNAL_NAME=“MSVCP71.DLL” LEGAL_COPYRIGHT=“© Microsoft Corporation. All rights reserved.” VERFILEDATEHI=“0x0” VERFILEDATELO=“0x0” VERFILEOS=“0x40004” VERFILETYPE=“0x2” MODULE_TYPE=“WIN32” PE_CHECKSUM=“0x8657E” LINKER_VERSION=“0x0” UPTO_BIN_FILE_VERSION="
7.10.3077.0" UPTO_BIN_PRODUCT_VERSION=“7.10.3077.0” LINK_DATE=“03/19/2003 04:14:51” UPTO_LINK_DATE=“03/19/2003 04:14:51” VER_LANGUAGE=“English (United States) [0x409]” />

<MATCHING_FILE NAME="w9xpopen.exe" SIZE="4608" CHECKSUM="0xF6BCA328" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="03/29/2006 15:35:37" UPTO_LINK_DATE="03/29/2006 15:35:37" />

<MATCHING_FILE NAME="python.exe" SIZE="4608" CHECKSUM="0x762090B5" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="03/29/2006 15:35:37" UPTO_LINK_DATE="03/29/2006 15:35:37" />

<MATCHING_FILE NAME="pythonw.exe" SIZE="5120" CHECKSUM="0xCDCFEA8A" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="03/29/2006 15:35:39" UPTO_LINK_DATE="03/29/2006 15:35:39" />

<MATCHING_FILE NAME="Lib\site-packages\wx-2.6-msw-ansi\unins000.exe" SIZE="72884" CHECKSUM="0x511F9CCD" BIN_FILE_VERSION="[51.5.0.0](http://51.5.0.0)" BIN_PRODUCT_VERSION="

51.5.0.0" PRODUCT_VERSION=" " FILE_DESCRIPTION=“Inno Setup Uninstaller” COMPANY_NAME=“Jordan Russell” PRODUCT_NAME="" FILE_VERSION="
51.5.0.0
" ORIGINAL_FILENAME="" INTERNAL_NAME="" LEGAL_COPYRIGHT=“Copyright © 1998-2001 Jordan Russell” VERFILEDATEHI=“0x0” VERFILEDATELO=“0x0” VERFILEOS=“0x4” VERFILETYPE=“0x1” MODULE_TYPE=“WIN32” PE_CHECKSUM=“0x0” LINKER_VERSION=“0x0” UPTO_BIN_FILE_VERSION="
51.5.0.0" UPTO_BIN_PRODUCT_VERSION=“51.5.0.0” LINK_DATE=“06/19/1992 22:22:17” UPTO_LINK_DATE=“06/19/1992 22:22:17” VER_LANGUAGE=“English (United States) [0x409]” />

<MATCHING_FILE NAME="Lib\site-packages\wx-2.7.1-msw-ansi\unins000.exe" SIZE="678682" CHECKSUM="0x3CABCCF3" BIN_FILE_VERSION="[51.43.0.0](http://51.43.0.0)" BIN_PRODUCT_VERSION="

51.43.0.0" PRODUCT_VERSION="" FILE_DESCRIPTION=“Setup/Uninstall” COMPANY_NAME="" PRODUCT_NAME=“Inno Setup” FILE_VERSION="
51.43.0.0
" ORIGINAL_FILENAME="" INTERNAL_NAME="" LEGAL_COPYRIGHT=“Copyright © 1997-2006 Jordan Russell. Portions Copyright © 2000-2006 Martijn Laan.” VERFILEDATEHI=“0x0” VERFILEDATELO=“0x0” VERFILEOS=“0x4” VERFILETYPE=“0x1” MODULE_TYPE=“WIN32” PE_CHECKSUM=“0x0” LINKER_VERSION=“0x0” UPTO_BIN_FILE_VERSION="
51.43.0.0" UPTO_BIN_PRODUCT_VERSION=“51.43.0.0” LINK_DATE=“06/19/1992 22:22:17” UPTO_LINK_DATE=“06/19/1992 22:22:17” VER_LANGUAGE=“English (United States) [0x409]” />

<MATCHING_FILE NAME="Lib\distutils\command\wininst-6.exe" SIZE="61440" CHECKSUM="0xA53DA7E0" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="02/03/2005 20:40:38" UPTO_LINK_DATE="02/03/2005 20:40:38" />

<MATCHING_FILE NAME="Lib\distutils\command\wininst-7.1.exe" SIZE="61440" CHECKSUM="0x916D9F80" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="02/03/2005 20:41:15" UPTO_LINK_DATE="02/03/2005 20:41:15" />

<MATCHING_FILE NAME="DLLs\tcl84.dll" SIZE="568320" CHECKSUM="0x2FBB71CD" BIN_FILE_VERSION="[8.4.2.7](http://8.4.2.7)" BIN_PRODUCT_VERSION="[

8.4.2.7](http://8.4.2.7)" PRODUCT_VERSION=“8.4.7” FILE_DESCRIPTION=“Tcl DLL” COMPANY_NAME=“ActiveState Corporation” PRODUCT_NAME=“Tcl 8.4 for Windows” FILE_VERSION=“8.4.7” ORIGINAL_FILENAME="
tcl84.dll" LEGAL_COPYRIGHT=“Copyright © 2001 by ActiveState Corporation, et al” VERFILEDATEHI=“0x0” VERFILEDATELO=“0x0” VERFILEOS=“0x4” VERFILETYPE=“0x2” MODULE_TYPE=“WIN32” PE_CHECKSUM=“0x99001” LINKER_VERSION=“0x0” UPTO_BIN_FILE_VERSION="
8.4.2.7" UPTO_BIN_PRODUCT_VERSION=“8.4.2.7” LINK_DATE=“08/30/2004 09:00:40” UPTO_LINK_DATE=“08/30/2004 09:00:40” VER_LANGUAGE=“English (United States) [0x409]” />

<MATCHING_FILE NAME="DLLs\tclpip84.dll" SIZE="5120" CHECKSUM="0xB489B43B" MODULE_TYPE="WIN32" PE_CHECKSUM="0xE7AF" LINKER_VERSION="0x0" LINK_DATE="08/30/2004 09:00:40" UPTO_LINK_DATE="08/30/2004 09:00:40" />

<MATCHING_FILE NAME="DLLs\tix8184.dll" SIZE="274432" CHECKSUM="0x3CFBDE17" MODULE_TYPE="WIN32" PE_CHECKSUM="0x43E90" LINKER_VERSION="0x0" LINK_DATE="08/31/2004 16:12:05" UPTO_LINK_DATE="08/31/2004 16:12:05" />

<MATCHING_FILE NAME="DLLs\tk84.dll" SIZE="1031168" CHECKSUM="0x9584A8F2" BIN_FILE_VERSION="[8.4.2.7](http://8.4.2.7)" BIN_PRODUCT_VERSION="[

8.4.2.7](http://8.4.2.7)" PRODUCT_VERSION=“8.4.7” FILE_DESCRIPTION=“Tk DLL” COMPANY_NAME=“ActiveState Corporation” PRODUCT_NAME=“Tk 8.4 for Windows” FILE_VERSION=“8.4.7” ORIGINAL_FILENAME="
tk84.dll" LEGAL_COPYRIGHT=“Copyright © 2001 by ActiveState Corporation, et al” VERFILEDATEHI=“0x0” VERFILEDATELO=“0x0” VERFILEOS=“0x4” VERFILETYPE=“0x2” MODULE_TYPE=“WIN32” PE_CHECKSUM=“0x109DFC” LINKER_VERSION=“0x0” UPTO_BIN_FILE_VERSION="
8.4.2.7" UPTO_BIN_PRODUCT_VERSION=“8.4.2.7” LINK_DATE=“08/30/2004 09:04:16” UPTO_LINK_DATE=“08/30/2004 09:04:16” VER_LANGUAGE=“English (United States) [0x409]” />

<MATCHING_FILE NAME="tcl\reg1.1\tclreg11.dll" SIZE="12800" CHECKSUM="0xA7592BFA" MODULE_TYPE="WIN32" PE_CHECKSUM="0x9AED" LINKER_VERSION="0x0" LINK_DATE="08/30/2004 09:00:41" UPTO_LINK_DATE="08/30/2004 09:00:41" />

<MATCHING_FILE NAME="tcl\dde1.2\tcldde12.dll" SIZE="13312" CHECKSUM="0x2CFFDE27" MODULE_TYPE="WIN32" PE_CHECKSUM="0xF70F" LINKER_VERSION="0x0" LINK_DATE="08/30/2004 09:00:42" UPTO_LINK_DATE="08/30/2004 09:00:42" />

John Salerno wrote:

Robin Dunn wrote:

I assume that by "Exit" here you are still talking about the menu item above.

No, I was referring to wx.Exit, which I think is a global call.

It is a way to forcibly kill the app, without any opportunity for the application objects to clean up after themselves. Most of the time you wouldn't want to use it.

You use Close() when you want to programatically tell the frame to go close itself, and is functionally the same as the user telling it to close itself with the "X" button.

Destroy() tells wx to delete the C++ object instance that corresponds to the frame. Normally it will destroy itself when it closes in the default EVT_CLOSE event handler, but if you catch the EVT_CLOSE yourself you either need to call Destroy in your handler, or call event.Skip so the default handler will still run. The EVT_CLOSE handler is where you would normally put the code that checks for open files, asks the user if she wants to save them or cancel, etc. Based on the user's response you can veto the close if you want.

I don't understand. So Close() does nothing more than make the window disappear?

No, it tells the window to close itself. That is a lot different than just hiding it.

Does Close() then automatically call Destroy()?

No, Close causes a EVT_CLOSE event to be sent. The default handler for that event calls Destroy().

What happens if I catch the wx.EVT_CLOSE event and make it call self.frame.Close()?

Then you'll get an endless loop.

Does it get destroyed also, or is the application still running somehow?

According to you and Andrea, I think this is what I need:

self.frame.Bind(wx.EVT_CLOSE, self.OnExitApp)

def OnExitApp(self, event):
    self.frame.Destroy()

Right? Or do I just use Close() still?

You use Close() from your menu event handler, or wherever you want to programatically cause the frame to be closed. You only need to provide a handler for EVT_CLOSE if you want to have more control over the closing of the frame than the default automatic destroy.

···

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

Robin Dunn wrote:

You use Close() from your menu event handler, or wherever you want to programatically cause the frame to be closed. You only need to provide a handler for EVT_CLOSE if you want to have more control over the closing of the frame than the default automatic destroy.

I think I got it now. I also re-read your earlier post and maybe I'm just in a more programmer-minded mood today, because it made more sense this time!

So Close() will eventually lead to Destroy(), assuming you don't catch EVT_CLOSE yourself, in which case you must call Destroy() manually, or call Skip().

Ultimately I'm going to want to do some checking before the program closes, so I assume I would do something like this:

1. Have my "Exit" menu item call Close()
2. Catch EVT_CLOSE to do the checking, and then call event.Skip()

Is there any difference between event.Skip() or just calling Destroy()? Does the former do more before the app closes?

Thanks!

John Salerno wrote:

Robin Dunn wrote:

You use Close() from your menu event handler, or wherever you want to programatically cause the frame to be closed. You only need to provide a handler for EVT_CLOSE if you want to have more control over the closing of the frame than the default automatic destroy.

I think I got it now. I also re-read your earlier post and maybe I'm just in a more programmer-minded mood today, because it made more sense this time!

So Close() will eventually lead to Destroy(), assuming you don't catch EVT_CLOSE yourself, in which case you must call Destroy() manually, or call Skip().

Ultimately I'm going to want to do some checking before the program closes, so I assume I would do something like this:

1. Have my "Exit" menu item call Close()
2. Catch EVT_CLOSE to do the checking, and then call event.Skip()

Is there any difference between event.Skip() or just calling Destroy()? Does the former do more before the app closes?

Calling event.Skip allows other event handlers (including the default) to run, so if there are other parts of the app that have bound a handler to the frame's EVT_CLOSE (pretty unlikely I agree) then they will get a chance to run. If you don't call Skip and just call Destroy yourself then that won't happen.

···

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

Robin Dunn wrote:

Calling event.Skip allows other event handlers (including the default) to run

So if there are no other handlers, just the default, would calling Destroy() be the same as event.Skip()? I know that the default handler calls Destroy(), but does it do more? In terms of a Venn diagram, I know that Destroy() is (at least) within event.Skip(), but are they the same or does event.Skip() do more work as well?

John Salerno wrote:

Robin Dunn wrote:

Calling event.Skip allows other event handlers (including the default) to run

So if there are no other handlers, just the default, would calling Destroy() be the same as event.Skip()? I know that the default handler calls Destroy(), but does it do more? In terms of a Venn diagram, I know that Destroy() is (at least) within event.Skip(), but are they the same or does event.Skip() do more work as well?

// The default implementation for the close window event.
void wxTopLevelWindowBase::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
{
     Destroy();
}

···

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

Robin Dunn wrote:

// The default implementation for the close window event.
void wxTopLevelWindowBase::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
{
    Destroy();
}

the same or does event.Skip() do more work as well?

lol, guess that's a no! :slight_smile: