diff --git a/fsl/utils/platform.py b/fsl/utils/platform.py
index 382d7bb921c705e6b6e8b7472f3a22aeff20c9a3..f015a9e0bcbe21827e315479929fa6b03c61a797 100644
--- a/fsl/utils/platform.py
+++ b/fsl/utils/platform.py
@@ -8,6 +8,14 @@
 of information about the current platform we are running on. A single
 ``Platform`` instance is created when this module is first imported, and
 is available as a module attribute called :attr:`platform`.
+
+This module is also home to the following utility functions which abstract
+away various platform differences:
+
+.. autosummary::
+   :nosignatures:
+
+   isWidgetAlive
 """
 
 
@@ -71,6 +79,25 @@ are running the Linux/GTK wx build.
 """
 
 
+def isWidgetAlive(widget):
+    """Returns ``True`` if the given ``wx.Window`` object is "alive" (i.e.
+    has not been destroyed), ``False`` otherwise. Works in both wxPython
+    and wxPython/Phoenix.
+    """
+
+    import wx
+
+    if platform.wxFlavour == WX_PHOENIX:
+        return bool(widget)
+    
+    elif platform.wxFlavour == WX_PYTHON:
+        try:
+            widget.IsEnabled()
+            return True
+        except wx.PyDeadObjectError:
+            return False
+
+
 class Platform(notifier.Notifier):
     """The ``Platform`` class contains a handful of properties which contain
     information about the platform we are running on.
@@ -107,6 +134,7 @@ class Platform(notifier.Notifier):
         self.WX_MAC_COCOA  = WX_MAC_COCOA
         self.WX_MAC_CARBON = WX_MAC_CARBON
         self.WX_GTK        = WX_GTK
+        self.isWidgetAlive = isWidgetAlive
 
         self.__fsldir       = os.environ.get('FSLDIR', None)
         self.__inSSHSession = False