No Python tkinter, o parâmetro "command" para o widget Button tem como objetivo especificar uma função para ser executado quando o botão for pressionado. Porém, um equívoco comum entre iniciantes é a observação de que a função associada ao "comando" é executada mesmo no momento da declaração do botão.
Para entender esse comportamento, precisamos nos aprofundar em como o Python lida com os parâmetros da função. Quando você passa uma função como parâmetro, existem duas possibilidades:
No código de exemplo que você forneceu, Hello() é passado como um parâmetro para o widget Button, o que significa que a função é executada imediatamente e seu valor de retorno é passado para "comando". Como Hello() não retorna nada, ele retorna None, que é então atribuído ao parâmetro "command" do botão, efetivamente não fazendo nada.
Para resolver esse problema e executar a função somente quando o botão for clicado, você deve passar o objeto de função, assim:
hi = Button(frame, text="Hello", command=Hello)
Desta forma, quando o botão for pressionado, a função Hello() será chamada e executará o código pretendido.
Além disso, se precisar passar argumentos para a função, você pode usar uma expressão lambda para encapsular a chamada da função, conforme demonstrado abaixo:
hi = Button(frame, text="Hello", command=lambda: Goodnight("Moon"))
Nesse caso, a expressão lambda garante que Goodnight() A função não é executada no momento da declaração do botão, mas espera até que o botão seja clicado e o comando seja executado.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3