Diciamo che ho 2 widget di voci, 1 menu di opzioni (elenco a discesa) e 1 pulsante in tkinter. ? Come posso impostare lo stato widget di pulsante per disabilitato fino a quando tutti e 3 i widget sono riempiti da parte dell'utente Questo è quello che ho attualmente:Python tkinter disabilita il pulsante fino a quando tutti i campi sono riempiti
import Tkinter as tk
root = tk.Tk()
entry1=tk.Entry(root,width=15).grid(row=1,column=1)
entry2=tk.Entry(root,width=15).grid(row=1,column=2)
choices=('a','b','c')
var=tk.StringVar(root)
option=tk.OptionMenu(root,var,*choices)
option.grid(row=1,column=3)
button=tk.Button(root,text="submit")
button.grid(row=1,column=4)
root.mainloop()
--EDIT--
provato in questo modo, ma non penso che questo sia il modo corretto per farlo.
import Tkinter as tk
root = tk.Tk()
def myfunction(event):
x=var.get()
y=entry1.get()
z=entry2.get()
print len(x),":",len(y),":",len(z)
if len(y)>0 and len(x)>0 and len(z)>0:
button.config(state='normal')
else:
button.config(state='disabled')
entry1=tk.Entry(root,width=15)
entry1.grid(row=1,column=1)
entry2=tk.Entry(root,width=15)
entry2.grid(row=1,column=2)
choices=('a','b','c')
var=tk.StringVar(root)
option=tk.OptionMenu(root,var,*choices)
option.grid(row=1,column=3)
button=tk.Button(root,text="submit")
button.grid(row=1,column=4)
root.bind("<Enter>", myfunction)
root.mainloop()
associazione su "" richiede che l'utente sposti lo stato attivo prima che lo stato del pulsante cambi. Questa non è una buona soluzione. Il pulsante dovrebbe cambiare stato non appena un widget riceve un input. –