Tkinter support isn't really mature enough yet to have generated many known issues in this area. Naming the occasional widget is however inherently necessary to its way of working, and there's at least one trick worth knowing about.
As discussed elsewhere, PyUseCase identifies widgets by Name, Title, Label and Type, in that order of preference. Many widgets simply don't have a Title or a Label attached to them and hence if you don't set names on them, they will be identified by Type, which will not work if you have more than one of them. Besides this, widget titles and labels may not be unique, or they may change depending on e.g. today's date. It's fair to say that almost every non-trivial application is going to need to set at least some widget names before PyUseCase will work smoothely.
Widget naming in Tkinter is a matter of providing the name as a keyword argument when constructing it.
userEntry = Entry(frame, name="username field")
There is no support in PyUseCase for recording and replaying interaction with tkMessageBoxes in the way other widgets are handled, nor is there likely to be, because there is no way provided to simulate interaction with them. If you use TextTest 3.17 or later though, however, help is at hand: you can simply add
collect_traffic_py_module:tkMessageBox
to your config file, and TextTest's own
interception mechanism will do the rest. Starting with TextTest 3.18 this will be added to your config file by default when you create a Tkinter application there.