Check state of button in tkinter
bind, button, canvas, python, tkinter
Solution
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!
Problem
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.