2016-10-25 3 views
1

В графическом интерфейсе tkinter я хочу печатать различные сообщения на холсте в зависимости от состояния кнопки, на которой я навешиваю. Если сама кнопка ОТКЛЮЧЕНА, я хочу отобразить другое сообщение на холсте, чем когда кнопка НОРМАЛЬНАЯ. у меня есть это (зачищенный) соответствующий код:Проверить состояние кнопки в tkinter

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() 

Это всегда привлекает «что текст» на холсте, а не «этот текст»

Я попытался следующие тоже:

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

если я печатаю:

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

это дает мне:

False 

Изменение состояния с помощью:

self.button["state"] = NORMAL 

работает, как я бы ожидать.

Здесь я прочитал несколько тем, но ни один из них не ответил на вопрос, почему инструкция if не работает.

ответ

1

После нескольких исследований я наконец получил решение.

print(self.button['state']) 

печатает:

disabled 

Так что я мог бы использовать:

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