Tutorial de Tkinter - Botón
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.
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.
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.
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.
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
si necesitas pasar argumentos a las funciones de devolución de llamada. Los objetos parciales
son objetos llamables con los argumentos posicionales args
y los argumentos de palabras clave keywords
.
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)
)
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook