root.mainloop () запускает цикл событий, пока что-то не остановит его. Удалите его, замените его на root.update()
и, возможно, root.update_idletasks()
, чтобы убедиться, что все действия графического интерфейса выполнены, или организуйте его остановку, добавив что-то вроде root.after(10, root.quit)
Набор тестов Python содержит графические тесты для tkinter, IDLE и turtle. Используя xvfb, они работают в Windows (Appveyor), Linux (Travis) и Mac (MS Azure, которые также запускают тесты в Windows и Linux). Сценарий эквивалентен python -m test
, который запускает все модули test.test_xyz. Модули Stdlib не запускаются как «главные».
Тесты IDLE в test_idle не запускают mainloop (). В настоящее время этого избегают, среди прочего, не запуская idlelib.pyshell.main (), которая содержит основной вызов mainloop (). (pyshell.main должен быть реорганизован для удаления большей части всего остального, чтобы разделить функции, которые можно протестировать без вызова mainloop ().) Тесты IDLE, которые создают виджеты, используют invoke, generate_event, update и, для чистых выходов, update_idletasks. Фактические тесты находятся в idlelib.idle_test.test_ *. Есть много с трудом завоеванных знаний о тестировании приложения tkinter, содержащегося в нем. Для проверки частей кода, не относящихся к графическому интерфейсу, помогают фиктивные виджеты.