Давайте сделаем простую алгебру.
selection.x - e.getX()
совпадает с
- (e.getX() - selection.x)
, поэтому ваше выражение говорит:
Math.max(- (e.getX() - selection.x), e.getX() - selection.x)
И поскольку положительная версия всегда будет больше, она всегда будет выбирать положительный ответ, и поэтому вы никогда не получите прямоугольник с отрицательной шириной / высотой.
Вы не можете отобразить файл docx в tkinter. Вам придется самостоятельно проанализировать документ и использовать функции текстового виджета (например, настраиваемые теги) для воспроизведения документа. Маловероятно, что вы сможете точно воспроизвести форматирование, но вы можете достаточно близко подобраться к простым документам, в основном текстовым.