Skip to main content
added 29 characters in body
Source Link

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.

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:

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.

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.

Source Link

Check state of button in tkinter

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:

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.