Представим, что пользователь нажимает на кнопки.
У Вас кнопки можно разделить на два типа:
1. Цифры.
2. Операции.
Каждая группа обрабатывается отдельным callback.
Представим процесс ввода.
Вначале, когда еще ни одна кнопка не нажата, должны работать только цифры. Все нажатия на клавиши операций должны игнорироваться. Для того, чтобы это было так, можно либо сделать их неактивными либо, чтобы не портить интерфейс, все их callback повесить на пустую функцию, которая ничего выполнять не будет. В обработчике цифр (тот обработчик, который добавляет цифры в поле ввода при нажатии на нужный button) Вы должны не только реализовать добавление в поле ввода, но и разблокирование клавиш операций или перенаправить их bind уже на действующую функцию и нормальный обработчик.
Внутри действующей функции или обработчика должно произойти следующее: добавиться операция в поле ввода и опять отключиться эта группа. Снова она должна перестать работать. А включится она сможет только тогда, когда опять будет введено число. Для отключения, как и в начале, можно использовать либо отключение активности либо просто опять перенаправить на функцию, которая ничего делать не будет.
Итого код следующий:
def pass_(event):
pass
#
def entry_set(event):
enrty.insert("end", event.widget["name"])
if event.widget["text"] in ["*", "+", "/"]:
but_oper.bind("<Button-1>", pass_)
else:
but_oper.bind("<Butto-1>", entry_set)
#
but_oper.bind("<Button-1>", pass_)
but_digit.bind("<Button-1>", entry_set)
Тут я привел костяк. И только для двух кнопок. У Вас их будет значительно больше.