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!
Related videos on Youtube
Author by
Joris Hilberink
Updated on June 04, 2022Comments
-
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.