<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def short_answer(question, answers, explanation=None):
 """ Generates a short answer question that allows user to input an answer in a textbox and a submit button to check the answer. Args: question (str):
 The question being asked. answers (str | list str | func):
 If a string, only that string will be marked correct. If a list of string, any string in the list will be marked correct. If a function, any input that causes the function to return True will be marked correct. explanation (str):
 The explanation to the question is displayed when the user inputs the correct answer. Returns: None <What is 1+1?> <Input box, Submit button> <Enter the first name of a member of the Beatles.> <Input box, Submit button> <Enter an even number.> <Input box, Submit button> """

    # Input textbox
    textbox = widgets.Text(placeholder='Write your answer here')
    # Submit button
    submit_button = widgets.Button(description='Submit')
    # Space right of the submit button to show checkmark/x-mark
    visual_correct = widgets.HTML()
    # Space below input line to display error if function call errored
    error_space = widgets.HTML()
    # Space below input line to display explanation if answer is correct
    explain_space = widgets.HTML()

    # correctness function linked to the submit button
    def check_answer(_):
        response = textbox.value
        if isinstance(answers, collections.Callable):
            try:
                error_space.value = ''
                correct = answers(response)
            except Exception as e:
                correct = False
                error_space.value = 'Error in checking answer: {}'.format(e)
        elif isinstance(answers, str):
            correct = response == answers
        elif isinstance(answers, collections.Iterable):
            correct = response in answers
        else:
            raise TypeError('The `answers` arg is an incorrect type.')

        visual_correct.value = CHECK_ICON if correct else X_ICON
        if correct and explanation:
            explain_space.value = explanation

    submit_button.on_click(check_answer)
    question_tag = widgets.HTML(TEXT_STYLE.format(question))
    user_input_line = widgets.HBox([textbox, submit_button, visual_correct])
    display(
        widgets.VBox([
            question_tag, user_input_line, error_space, explain_space
        ])
    )