How to Change Tkinter Button State? - GeeksforGeeks

17 Dec, 2020
Tkinter is a Python Package for creating GUI applications. Python has a lot of GUI frameworks, but Tkinter is the only framework that’s built into the Python standard library. Tkinter has several strengths; it’s cross-platform, so the same code works on Windows, macOS, and Linux. Tkinter is lightweight and relatively painless to use compared to other frameworks.
In this article, we are going to learn how we can change the state of a Button.
Let’s understand this with step-wise:
Step 1: First we are going to import the Tkinter module and some widgets that we need.
Python3
# importing tkinter module# along with some constants and Widgets  from tkinter import Tkfrom tkinter.constants import DISABLED, NORMALfrom tkinter.ttk import Button, Label
If you are using Python2 then change tkinter to Tkinter and also tkinter.ttk will not also work so import widgets from Tkinter itself.
Step 2: Now we are going to create an App class that will contain all the Buttons and Labels.
Python3
# Creating App class which# will contain our overall Appclass 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)
Step 3: As you can see in the above code, we have a function attached with Button2 i.e changeState function next we are going to implement this function. In this function, we will change the State of Button1.
Python3
# Helper function which will change the State of Button1def 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
Step 4: In this step, we will create the main function that will run this application. In the main function, we will set the application title and geometry and instantiate our App class.
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()
Below is the full implementation:
Python3
# importing tkinter module# along with some constants and Widgetsfrom tkinter import Tkfrom tkinter.constants import DISABLED, NORMALfrom tkinter.ttk import Button, Label  # Creating App class# which will contain our overall Appclass 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()
Output:
Picked
Python-tkinter
Technical Scripter 2020
Python
Technical Scripter
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Python Dictionary
Enumerate() in Python
How to Install PIP on Windows ?
Different ways to create Pandas Dataframe
sum() function in Python
Create a Pandas DataFrame from Lists
How to drop one or multiple columns in Pandas Dataframe
*args and **kwargs in Python
Graph Plotting in Python | Set 1
Print lists in Python (4 Different Ways)