Вы вызываете его неявно, с неправильными / недостаточными позиционными параметрами здесь:
OptionMenu(root, default, *ports, command=on_select)
Когда вы вызываете класс с параметрами, вызывается __init__
.
help(OptionMenu)
показывает подпись инициализатора:
class OptionMenu(Menubutton)
| OptionMenu(master, variable, value, *values, **kwargs)
Вы должны установить как минимум одно значение. Другие значения необязательны.
пример использования:
w = OptionMenu(master, variable, "one", "two", "three")
Здесь ваш список ports
пуст, поэтому распаковка не приводит к каким-либо аргументам. Что объясняет ошибку. Одно «исправление» будет следующим:
OptionMenu(root, default, *(ports or ["<empty>"]), command=on_select)
Если список пуст, у вас есть только одна опция (пустая). Или проверьте, не пусто ли, и создайте сообщение уровня пользователя, если список пуст