Introdução à programação
com Python em um contexto visual


Uma janela de diálogo com um campo de texto como input

Contexto histórico

Em quase todas as implementações de Python existe uma função chamada input() que “pergunta” a quem estiver executando o programa um valor por meio da digitação no console, o texto digitado é devolvido então para o programa como string.

Tenha em mente que chamar input() é uma ação “bloqueante”, que para o seu programa até que a pessoa responda.

while True:
    nome = input('Qual o seu nome?\n')
    if nome.strip():
        print(f'Olá, {nome}!\n')
    else:
        print('Olá, você deixou a resposta vazia, vou encerrar!')
        exit()  # Melhor usar exit_sketch() se estiver usando o py5

Resultados possíveis no console:

Qual o seu nome?   
Alexandre
Olá, Alexandre!

Qual o seu nome?   
Olá, você deixou a resposta vazia, vou encerrar!

O Processing modo Python não tinha essa função, e o código mais abaixo mostra uma alternativa possível que abre uma janela de diálogo com uma pergunta e um campo para digitação do texto. Com py5 agora é possível usar input() e interagir no console.

Ainda pode ser legal disparar uma janela de diálogo, com um campo de texto, e um motivo para não querer usar o input() do Python, pode ser o fato de que fica difícil ver o console, em especial se você estiver usando a tela toda (fullscreen).

showInputDialog do Java swing

def gui_input(question='', suggestion=''):
    from javax.swing import JOptionPane
    return JOptionPane.showInputDialog(None, question, suggestion)

Vejamos então um exemplo de uso, em que um clique do mouse dispara a janela para o input textual.

texto = "clique na janela para mudar o texto"


def setup():
    size(400, 400)
    text_align(CENTER, CENTER)


def draw():
    background(0, 0, 200)
    text(texto, width / 2, height / 2)


def mouse_pressed():
    global texto
    resposta = gui_input('escreva um novo texto')
    if resposta:
        texto = resposta
    elif resposta == "":
        print("[resposta vazia]")
    else:
        print(resposta)  # se cancelada a janela exibe `None` no console


def gui_input(question='', suggestion=''):
    from javax.swing import JOptionPane
    return JOptionPane.showInputDialog(None, question, suggestion)