Vinculação de comando Tkinter

Resumo : neste tutorial, você aprenderá sobre a ligação do comando Tkinter que associa um retorno de chamada a um evento de um widget.

Introdução à ligação de comando Tkinter

Para tornar a aplicação mais interativa, os widgets precisam responder a eventos como:

  • Cliques do mouse
  • Pressionamentos de teclas

Isso requer a atribuição de uma função de retorno de chamada a um evento específico. Quando o evento ocorrer, o retorno de chamada será invocado automaticamente para tratar o evento.

No Tkinter, alguns widgets permitem associar uma função de retorno de chamada a um evento usando o comando bind.

Isso significa que você pode atribuir o nome de uma função à opção de comando do widget para que quando o evento ocorrer no widget, a função seja chamada automaticamente.

Para usar a ligação de comando, siga estas etapas:

  • Primeiro, defina uma função como retorno de chamada.
  • Em seguida, atribua o nome da função à commandopção do widget.

Por exemplo, o seguinte define uma função chamada button_clicked():

def button_clicked():
    print('Button clicked')Linguagem de código:  Python  ( python )

Depois disso, você pode associar a função à commandopção de widget de botão :

ttk.Button(root, text='Click Me',command=button_clicked)Linguagem de código:  Python  ( python )

Observe que você passa o retorno de chamada sem parênteses ()dentro da commandopção. Caso contrário, o retorno de chamada seria chamado assim que o programa fosse executado.

O programa a seguir ilustra como associar a button_clickedfunção de retorno de chamada ao Buttonwidget:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()


def button_clicked():
    print('Button clicked')


button = ttk.Button(root, text='Click Me', command=button_clicked)
button.pack()

root.mainloop()Linguagem de código:  Python  ( python )

Argumentos de comando do botão Tkinter

Se quiser passar os argumentos para uma função de retorno de chamada, você pode usar uma expressão lambda .

Primeiro, defina uma função que aceite o argsargumento:

def callback_function(args):
    # do somethingLinguagem de código:  Python  ( python )

Em seguida, defina uma expressão lambda e atribua-a ao commandargumento do widget de botão. Dentro da expressão lambda, invoque a função de retorno de chamada:

ttk.Button(
    root,
    text='Button',
    command=lambda: callback(args)
)Linguagem de código:  Python  ( python )

O programa a seguir ilustra como passar um argumento para a função de retorno de chamada associada ao comando do botão:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()


def select(option):
    print(option)


ttk.Button(root, text='Rock', command=lambda: select('Rock')).pack()
ttk.Button(root, text='Paper',command=lambda: select('Paper')).pack()
ttk.Button(root, text='Scissors', command=lambda: select('Scissors')).pack()

root.mainloop()Linguagem de código:  Python  ( python )

Quando você clica em um botão, a expressão lambda associada ao comando do botão será executada. Ele chamará a select()função com um argumento de string.

Limitações da vinculação de comandos

Primeiro, a commandopção não está disponível em todos os widgets; É limitado a Buttonalguns outros widgets.

Em segundo lugar, o commandbotão é vinculado ao clique esquerdo e ao backspace, mas não à Returntecla.

Para verificar isso você pode mover o foco para um botão no programa acima e pressionar as teclas backspace e return.

Infelizmente, isso não é fácil de usar e você não pode alterar facilmente a vinculação da commandfunção.

Para superar essas limitações, o Tkinter fornece uma forma alternativa de associar uma função a um evento chamada event binding .

Resumo

  • Atribuir um nome de função à commandopção de um widget é chamado de ligação de comando no Tkinter. A função atribuída será invocada automaticamente quando o evento correspondente ocorrer no widget.
  • Apenas alguns widgets suportam a commandopção.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *