Je continue à avoir l'erreur suivante: AttributeError: l'objet 'NoneType' n'a pas d'attribut 'configure'
# create color button
self.button = Button(self,
text = "Click Me",
command = self.color_change,
bg = "blue"
).grid(row = 2, column = 2, sticky = W)
def color_change(self):
"""Changes the button's color"""
self.button.configure(bg = "red")
Lorsque vous faites self.button = Button(...).grid(...)
, ce qui est affecté à self.button
est le résultat de la commande grid()
, not une référence à l'objet Button
créé.
Vous devez assigner votre variable self.button
avant de l’emballer ou de la graver. Elle devrait ressembler à ceci:
self.button = Button(self,text="Click Me",command=self.color_change,bg="blue")
self.button.grid(row = 2, column = 2, sticky = W)
Une autre façon de changer la couleur d'un bouton si vous souhaitez effectuer plusieurs opérations en même temps que le changement de couleur. L'utilisation de la méthode Tk().after
et la liaison d'une méthode de modification vous permettent de changer de couleur et d'effectuer d'autres opérations.
Label.destroy
est un autre exemple de la méthode after.
def export_win():
//Some Operation
orig_color = export_finding_graph.cget("background")
export_finding_graph.configure(background = "green")
tt = "Exported"
label = Label(tab1_closed_observations, text=tt, font=("Helvetica", 12))
label.grid(row=0,column=0,padx=10,pady=5,columnspan=3)
def change(orig_color):
export_finding_graph.configure(background = orig_color)
tab1_closed_observations.after(1000, lambda: change(orig_color))
tab1_closed_observations.after(500, label.destroy)
export_finding_graph = Button(tab1_closed_observations, text='Export', command=export_win)
export_finding_graph.grid(row=6,column=4,padx=70,pady=20,sticky='we',columnspan=3)
Vous pouvez également revenir à la couleur d'origine.