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.

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 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 a solução a seguir era um contorno possível. Com py5 agora é possível usar input() e interagir no console, mas ainda pode ser legal disparar uma janela de diálogo, com um campo de texto. Especialmente se você estiver usando a tela toda (fullscreen) e não for muito prático ver o console.

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)