¿Cómo cambiar el estado del botón Tkinter?

Tkinter es un paquete de Python para crear aplicaciones GUI. Python tiene muchos marcos de GUI, pero Tkinter es el único marco integrado en la biblioteca estándar de Python. Tkinter tiene varios puntos fuertes; es multiplataforma, por lo que el mismo código funciona en Windows, macOS y Linux. Tkinter es liviano y relativamente fácil de usar en comparación con otros marcos.

En este artículo, vamos a aprender cómo podemos cambiar el estado de un Botón.

Entendamos esto con paso a paso:

Paso 1: Primero vamos a importar el módulo Tkinter y algunos widgets que necesitamos.

Python3

# importing tkinter module
# along with some constants and Widgets
  
from tkinter import Tk
from tkinter.constants import DISABLED, NORMAL
from tkinter.ttk import Button, Label

Si está utilizando Python2 , cambie tkinter a Tkinter y tkinter.ttk tampoco funcionará, así que importe widgets desde Tkinter.

Paso 2: ahora vamos a crear una clase de aplicación que contendrá todos los botones y etiquetas.

Python3

# Creating App class which
# will contain our overall App
class App:
    def __init__(self, master) -> None:
  
        # Instantiating master i.e toplevel Widget
        self.master = master
  
        # Creating label
        self.label = Label(self.master,
                           text = "Click Button2 to change Button1 State")
        self.label.pack(pady = 10)
  
        # Creating button1
        # We will change the state of this Button
        # it has a initial state of "NORMAL" 
        # i.e Button can be pressed
        self.button1 = Button(self.master,
                              text = "Button1",
                              state = NORMAL)
          
        self.button1.pack(pady = 20)
  
        # Creating another button
        # We will use this button to
        # change the State of first button
        self.button2 = Button(self.master,
                              text = "Button2",
                              command = self.changeState)
          
        self.button2.pack(pady = 20)

Paso 3: Como puede ver en el código anterior, tenemos una función adjunta con Button2, es decir , la función changeState . A continuación, implementaremos esta función. En esta función, cambiaremos el Estado del Botón1.

Python3

# Helper function which will change the State of Button1
def changeState(self) -> None:
  
    # Printing the State of 
    # the Button before ALTERING it
    # This is optional
    print(self.button1['state'])
  
    # Checking if the STATE of the Button1
  
    # If the STATE is NORMAL
    if (self.button1['state'] == NORMAL):
  
        # Change the state to DISABLED
        self.button1['state'] = DISABLED
    else:
        
        # Otherwise, change the state to NORMAL
        self.button1['state'] = NORMAL

Paso 4: En este paso, crearemos la función principal que ejecutará esta aplicación. En la función principal, estableceremos el título y la geometría de la aplicación e instanciaremos nuestra clase de aplicación.

Python3

if __name__ == "__main__":
  
    # Instantiating top level
    root = Tk()
  
    # Setting the title of the window
    root.title("Button State App")
  
    # Setting the geometry i.e Dimensions
    root.geometry("400x250")
  
    # Calling our App
    app = App(root)
  
    # Mainloop which will cause
    # this toplevel to run infinitely
    root.mainloop()

A continuación se muestra la implementación completa:

Python3

# importing tkinter module
# along with some constants and Widgets
from tkinter import Tk
from tkinter.constants import DISABLED, NORMAL
from tkinter.ttk import Button, Label
  
# Creating App class
# which will contain our overall App
class App:
    def __init__(self, master) -> None:
  
        # Instantiating master 
        # i.e toplevel Widget
        self.master = master
  
        # Creating label
        self.label = Label(self.master,
                           text="Click Button2 to change Button1 State")
          
        self.label.pack(pady = 10)
  
        # Creating button1
        # We will change the state of this Button
        # it has a initial state of 
        # "NORMAL" i.e Button can be pressed
        self.button1 = Button(self.master, 
                              text = "Button1", 
                              state = NORMAL)
          
        self.button1.pack(pady = 20)
  
        # Creating another button
        # We will use this button
        # to change the State of first button
        self.button2 = Button(self.master,
                              text = "Button2",
                              command = self.changeState)
          
        self.button2.pack(pady = 20)
  
    # Helper function which will 
    # change the State of Button1
    def changeState(self) -> None:
  
        # Printing the State of 
        # the Button before ALTERING it
        # This is optional
        print(self.button1['state'])
  
        # Checking if the STATE of the Button1
        # If the STATE is NORMAL
        if (self.button1['state'] == NORMAL):
  
            # Change the state to DISABLED
            self.button1['state'] = DISABLED
        else:
  
            # Otherwise, change the state to NORMAL
            self.button1['state'] = NORMAL
  
  
if __name__ == "__main__":
  
    # Instantiating top level
    root = Tk()
  
    # Setting the title of the window
    root.title("Button State App")
  
    # Setting the geometry i.e Dimensions
    root.geometry("400x250")
  
    # Calling our App
    app = App(root)
  
    # Mainloop which will cause this toplevel
    # to run infinitely
    root.mainloop()

Producción:

Publicación traducida automáticamente

Artículo escrito por sanjeev2552 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *