Типичные ошибки при работе с виджетами
Как не попасть в ловушки и понять сообщения компилятора
Забыли win.add_child()
Самый частый промах — создать виджет, но не добавить его в окно или контейнер. Виджет существует, но его не видно.
Исправление: всегда добавляйте виджеты в окно или контейнер через win.add_child(виджет) или frame.add_child(виджет).
Неправильный порядок добавления — перекрытие
Виджеты отрисовываются в порядке вызова add_child(). Первый добавленный — снизу, последний — сверху.
Исправление: планируйте порядок добавления или используйте координаты, чтобы виджеты не пересекались.
Неверный тип в sender
При использовании параметра sender тип должен точно соответствовать типу виджета, который вызывает событие.
Исправление: всегда указывайте правильный тип виджета в параметре sender.
Присваивание числа свойству text у Label или Button
Свойство text у лейблов и кнопок ожидает строку (string). Число нужно преобразовывать через to_string().
Исправление: label.text = to_string(42);
Обращение к виджету до его создания
Переменная виджета должна быть объявлена до того, как вы пытаетесь её использовать в обработчике.
Исправление: объявляйте виджет до его использования в обработчиках.
Timer: забыли вызвать start()
Таймер не запускается автоматически после создания. Нужно явно вызвать start().
Исправление: не забывайте вызывать timer.start().
Modal: попытка добавить через add_child()
Модальные окна не являются виджетами в привычном смысле. Их не нужно добавлять в окно через add_child().
Исправление: модальные окна создаются и показываются динамически, без add_child().
Выход за границы массива виджетов
При работе с массивами виджетов легко выйти за пределы, если индекс больше length() - 1.
Исправление: всегда проверяйте, что индекс в пределах 0 .. length()-1.
Свойства, которых нет у виджета
У каждого виджета свой набор свойств. Не все виджеты имеют placeholder или font_size.
Исправление: сверяйтесь со спецификацией виджета. У кнопки есть text, enabled, on_click, но нет placeholder или font_size.
Как читать сообщения об ошибках
Сообщения компилятора для GUI-виджетов такие же, как для консольного кода:
file.idyl:строка: error: ...— ошибка компиляцииfile.idyl:строка: runtime error: ...— ошибка выполнения
add_child().