After 3 kids, and lots of money spent, I have perfected my lunches for the kids.
I use the 3 compartment ziplock containers but they are discontinued now. Once they run out (they each last a few months) then I will go to the other one on this page below. The zip locks are 100% leak proof. I have used yogurt, cottage cheese, fruits, applesauce, etc... and they do not leak in-between the other compartments.
http://www.easylunchboxes.com/blog/how-do-ziploc-3-compartment-lunch-containers-compare-to-easylunchboxes/
I use that and a thermos Funtainer bottle for a drink.
http://www.amazon.com/Thermos-12-Ounce-Funtainer-Bottle-Blue/dp/B00DAPQV0K/ref=sr_1_1?s=home-garden&ie=UTF8&qid=1421620614&sr=1-1&keywords=thermos+funtainer
and they both fit inside a Lands End lunchbox that is machine washable.
http://www.landsend.com/products/solid-classmate-soft-sided-lunch-box/id_269655
I also use Thermos Funtainer Food Jars for soups, reheated dinners like mac n cheese, spaghetti, casseroles ect... When I use that, I usually add a small rubbermaid container with fruit and the thermos bottle for a drink.
The key for young kids is that they should only have to open one item. Don't mess with lots of containers or drink boxes. Don't add a bunch of food. They have 20 minutes tops to eat and that is with talking to all of their friends. I do one major item, one fruit, one other item. All healthy but things they will eat.
My one rule is to NEVER throw anything away. I even want to see crusts. It isn't to get mad at them. It is know that they are truly eating, if I am under packing, over packing, etc... It works.