Skip to the content.

Control: close

When the window or dialog is closed.

Contrary to other controls, this one is automatically triggered by the Blind User Interface when the window is ready to be closed (that is, just before BUI stops itself), but before it actually closes it. Cleaning up is possible at this point. It is also possible to set this control on a dialog, to perform action when the dialog is closed.


This control is automatically scheduled when the window is ready to be closed, but before the window is actually destroyed, unless the control method is asynchronous. Although less used than init, this control can be useful to perform clean-up tasks before the window is closed, in response to user action or code.

def on_close(self):
    # The window closes

Window control

This control can be linked to a window. Simply specify a method called on_close in your Window-inherited class. This method will be called when the window is ready to close, but before it actually does.

class Example(Window):

    def on_close(self):

Also notice that placing such a control on a dialog class is possible. This allows to set some consistent behavior on a dialog when it closes.

Widget control

You cannot use this control on a widget. A text or checkbox doesn’t close and get a chance to clean itself up. These tasks should be performed in the window itself.

Asynchronous calls

This control can be bound to an asynchronous method (that is, a coroutine). However, notice that using such a method doesn’t guarantee the method will be called before the window is destroyed, which might create some logical errors depending on what you want to achieve:

async def on_close(self, ...):

As usual, just place the async keyword before the method definition to make it asynchronous. Although you won’t have control over when the window is destroyed, you will be able to divide the task in different periods of time.

Control attributes

This control doesn’t have any attribute.

def on_close(self, control):