Check state of button in tkinter

13,948

After some more research I finally got a solution.

print(self.button['state'])

prints:

disabled

So I could use:

state = str(self.button['state'])
if state == 'disabled':
    #print the correct text!
Share:
13,948

Related videos on Youtube

Joris Hilberink
Author by

Joris Hilberink

Updated on June 04, 2022

Comments

  • Joris Hilberink
    Joris Hilberink almost 2 years

    On a tkinter GUI I want to print different messages on a canvas depending on the state of a button I hover over. If the button itself is DISABLED, I want to display another message on the canvas than when the button is NORMAL. I have this (stripped) relevant code:

    from tkinter import *
    
    class app:
        def __init__(self):
            self.window = Tk()
            self.button = Button(self.window,text="Button",command=self.someCommand,state=DISABLED)
    
            self.button.bind("<Enter>", self.showText)
            self.button.bind("<Leave>", self.hideText)
    
            self.window.mainloop()
    
        def showText(self):
            if self.button["state"] == DISABLED:
                #print this text on a canvas
            else:
                #print that text on a canvas
    
        def hideText(self):
            #remove text    
    
    def main()
        instance = app()
    
    main()
    

    This always draws 'that text' on the canvas, instead of 'this text'

    I have tried the following too:

     self.button['state']
     == 'disabled'
     == 'DISABLED'
    

    if I print:

    print(self.button["state"] == DISABLED)
    

    it gives me:

    False
    

    Changing the state using:

    self.button["state"] = NORMAL
    

    works as I would expect.

    I have read through a few topics here but none seem to answer the question to why the if-statement doesn't work.