Как написать красивый и понятный код?
Красивый и понятный код = читаемый код. 
Нагугли что такое самодокументирующийся код.

Я сам начинающий, но с чего бы я начал это распутывать:
area[0][0]["text"]  - тут у тебя куча раз написано примерно одно и то же, меняется только 2 числа.
Легчайшим образом переносится в функцию:
def x_here(x,y):
    if area[x][y][text] == X:
        return True
    else:
        return False

тогда одна строка в winner() уже будет вот так выглядеть:

if x_here(0,0) and x_here(0,1) and x_here(0,2):
    return "X"

тут у тебя снова есть повторяющиеся элементы
во-первых, координаты для победы заранее известны
win_condition_topleft_to_botright = ((0,0),(0,1),(0,2))
у нас есть кортеж с кортежами. Если в этих координатах везде окажутся иксы - нужно вернуть X (победа). У этого кортежа понятное название (слева вверху к низу справа)

далее нам нужна функция которая примет это условие победы и проверит его:
def check_win_condition(first, second, third):  
    """на вход три кортежа, являющиеся координатами игрового поля"""

    if x_here(*first) and x_here(*second) and x_here(*third):
        return "X"

def winner():
    check_win_condition(*win_condition_topleft_to_botright)
    check_win_condition(*win_condition_2)
    check_win_condition(*win_condition_3)
    check_win_condition(*win_condition_4)

И... видишь повторяющиеся элементы? 4 одинаковые строки, в которых меняется только один параметр?
Ah shit, here we go again
Ты знаешь что делать. Действуй.
Разбей программу на две части.
1. Класс "игровое поле". Хранит и сообщает (но не показывает на экране!) текущее состояние поля игры, позволяет делать ходы, отслеживает их очерёдность и корректность, определяет завершение игры и победителя (если есть). Словом, содержит в себе собственно логику игры.
2. Класс "окно игры". Держит у себя ссылку на экземпляр класса "игровое поле", показывает его состояние,  т.ч. состояние игры в целом, вызывает метод хода согласно действиям пользователя.
2,5. Основная программа. Создаёт поле, создаёт окно игры, показывает его на экране, уходит в рабочий цикл (mainloop).