2013-04-16 2 views
17

Ich brauche den Zustand DISABLED-NORMAL ein Button zu ändern, wenn ein Ereignis auftritt. HierWie ändere ich den Zustand von Tkinter Button von deaktiviert auf normal?

ist der aktuelle Stand meiner Button, der zur Zeit deaktiviert ist:

self.x = Button(self.dialog, text="Download", 
       state=DISABLED, command=self.download).pack(side=LEFT) 

self.x(state=NORMAL) # this does not seem to work 

anyonne kann mir helfen, wie das zu tun?

Antwort

34

Sie müssen einfach nur die state des Satzes Ihre Taste self.x-normal:

self.x['state'] = 'normal' 

oder

self.x.config(state="normal") 

Dieser Code in der Callback für den Fall gehen würde, dass die Taste verursachen wird aktiviert sein.


Auch der richtige Code sollte sein:

self.x = Button(self.dialog, text="Download", state=DISABLED, command=self.download) 
self.x.pack(side=LEFT) 

Verfahren pack in Button(...).pack() kehrt None, und Sie es self.x zuweisen. Sie wollen tatsächlich den Rückgabewert von Button(...)-self.x, zuweisen und dann in der folgenden Zeile, verwenden self.x.pack().

+0

Es soll hinzugefügt werden, dass dieser Code in der Callback für den Fall gehen würde, dass die Taste bewirkt aktiviert werden. –

+0

Ich habe versucht, den Fehler: self.x ['state'] = 'aktiviert' : 'NoneType' Objekt unterstützt keine Artikelzuweisung – scandalous

+0

Sie missbrauchen einige Funktion.Siehe mein Update. – Sheng

6

Ich denke, ein schneller Weg, um die Optionen eines Widgets zu ändern, ist die configure Methode.

In Ihrem Fall würde es so aussehen:

self.x.configure(state=NORMAL)