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 à
command
opçã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 à command
opçã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 command
opçã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_clicked
função de retorno de chamada ao Button
widget:
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 args
argumento:
def callback_function(args):
# do something
Linguagem de código: Python ( python )
Em seguida, defina uma expressão lambda e atribua-a ao command
argumento 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 command
opção não está disponível em todos os widgets; É limitado a Button
alguns outros widgets.
Em segundo lugar, o command
botão é vinculado ao clique esquerdo e ao backspace, mas não à Return
tecla.
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 command
funçã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 à
command
opçã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
command
opção.