Tutorial de Tkinter - Botón

  1. Opción default del botón Tkinter
  2. Comando Tkinter Button Callback

El widget de botones de Tkinter es bastante similar al widget de etiquetas de Tkinter. Tiene casi las mismas opciones que las de la etiqueta, excepto que tiene una opción extra default. Demostraremos los detalles de esta opción default después de un ejemplo básico de botón.

Podrías generar dos botones más simples usando los códigos de demostración de abajo.

Tkinter Button_Basic.py
from sys import version_info
if version_info.major == 2:
    import Tkinter as tk
elif version_info.major == 3:
    import tkinter as tk
    
app = tk.Tk()
button1 = tk.Button(app, text="Python Label 1")
button2 = tk.Button(app, text="Python Label 2")
button1.pack(side=tk.LEFT)
button2.pack(side=tk.LEFT)
app.mainloop()

La ventana con dos botones adyacentes entre sí se muestra después de ejecutar los códigos.

Etiqueta Tkinter Tutorial_Basic

Opción default del botón Tkinter

La opción default en el botón dice que el botón es el botón por defecto en la GUI, por ejemplo, el que se invoca automáticamente cuando el usuario presiona la tecla Enter o Return.

Comando Tkinter Button Callback

La opción command invoca la función de devolución de llamada cuando el botón es presionado.

Tkinter Button_command callback.py
from sys import version_info
if version_info.major == 2:
    import Tkinter as tk
elif version_info.major == 3:
    import tkinter as tk
    

    
app = tk.Tk()
labelExample = tk.Button(app, text="0")

def change_label_number():
    counter = int(str(labelExample['text']))
    counter += 1
    labelExample.config(text=str(counter))
    
buttonExample = tk.Button(app, text="Increase", width=30,
                          command=change_label_number)

buttonExample.pack()
labelExample.pack()
app.mainloop()

Crea un botón y un widget de etiqueta en la ventana principal. El número en el texto de la etiqueta se incrementa en 1 cada vez que se pulsa el botón.

Tkinter Tutorial_Button Command Callback

def change_label_number():
    counter = int(str(labelExample['text']))
    counter += 1
    labelExample.config(text=str(counter))

El change_label_number es la función que se invoca cuando se hace clic en el botón. Obtiene el número de etiqueta y luego establece la etiqueta incrementada en uno.

buttonExample = tk.Button(app, text="Increase", width=30,
                          command=change_label_number)

Construye el enlace entre el botón y su función de devolución de llamada.

Función de retrollamada del comando del botón de Tkinter con argumentos

Necesitas un objeto parcial' de [functools](https://docs.python.org/2/library/functools.html) si necesitas pasar argumentos a las funciones de devolución de llamada. Los objetosparcialesson objetos llamables con los argumentos posicionalesargsy los argumentos de palabras clavekeywords`.

El siguiente fragmento de código demuestra cómo usar esta función parcial en el comando button.

def change_label_number(num):
    counter = int(str(labelExample['text']))
    counter += num
    labelExample.config(text=str(counter))
    
buttonExample = tk.Button(app, text="Increase", width=30,
                          command=partial(change_label_number, 2))
comments powered by Disqus