Sounds like you need to have some logical consequences for her actions. For example, if she misbehaves while eating (like putting food in her milk cup) you take away the milk. Done. If she mistreats her toys, the toy has a time out the first time, and gets taken away for the remainder of the day the second time. You can use counting (I wait at least 5 seconds between 1-2-3) and enact the consequence at 3. That gives her a chance to correct her actions.
When my 2 yo son has a fit about getting ready to go someplace fun (like a class) I will count and remind him that if I get to 3, we will not go to the class, but instead will sit at home and be bored. The key is that you need NEED to follow through with the threat. (Yes, I know you wanted to get out of the house too, and that we pay for the classes, but she won't take you seriously if you don't follow through. Sometimes I give my son a chance to "earn" back a privilege by being extra good/helpful). With the grocery store thing (yeah, you can't not go to the store I know) I would probably leave my son strapped in his car seat (tightly, if necessary) and stand by the open car door ignoring him until he calmed down and was ready to behave.
The other thing you can do is positively reinforce. Make sure you let her know EVERY time she does a good job. Even if it's a simple "thank you for helping me get your shoes on so nicely today" and a kiss, this makes a big difference. Make a big deal out of things by pointing them out to others too. For example, "Daddy, did you know that Emma is such a big girl she got her coat on and climbed into her carseat all by herself today? I'm so proud of her!" If we get through a whole grocery run (and my son has been well behaved the whole time, we will sometimes get a treat like a juice box, that he can drink on the way home in the car. (The key here is to remind him that he only gets it if he's really good).