2013-03-28 2 views
1

Я пытаюсь отключить кнопку с помощью Tkinter:Tkinter - как отключить существующую кнопку

from Tkinter import * 
import os 


class OptionWindow: 




    def __init__(self, value): 

     self.master = Tk() 
     self.master.minsize(500,500) 
     self.b1 = Button(self.master, text = "save Game", command =self.saveGame, state = NORMAL).grid(row = 0, column = 1, sticky = W) 

    def saveGame(self):  
     from modules.startingKit import options 
     options.saved = True 
     self.b1.configure (state = DISABLED) 

Тем не менее, по какой-то причине, когда я нажимаю кнопку «сохранить игру», его внешний вид не меняется. Что нужно сделать, чтобы отключить его?

+0

Не уверен, если это имеет значение: Вы начали MainLoop? 'self.master.mainloop()' как последнее в вашей функции '__init__'. Или приведите экземпляр 'Tk()' в качестве параметра в конструктор 'OptionWindow' и передайте его' self.master'. –

+0

У меня есть ... извините, я здесь ничего не делал. – newnewbie

ответ

4

Вы ошиблись, вероятно, потому, что в Интернете есть несколько обучающих программ, которые делают эту ошибку.

В python, если вы делаете x=foo().bar(), x дается результат bar(). В коде вы делаете self.b=Button(...).grid(...). Таким образом, self.b установлен на результат grid(...). grid(...) всегда возвращает None. Из-за этого делать self.b.configure(...) так же, как делать None.configure(...), который, очевидно, не собирается делать то, что вы думаете, что он собирается делать.

Решение сделать виджет создания и компоновки виджетов в отдельных этапов:

self.b1 = Button(...) 
self.b1.grid(...) 
+0

Ницца, Брайан! –

Смежные вопросы