'Python Turtle tic-tac-toe board letters keep disappearing

I've made a tic-tac-toe game in python using python turtle. I've made it so that when you click on a square on the board, a letter is placed there, and then the computer places a letter onto the board. However, when the player places a letter on the board and the computer places a letter on the board, a split second later, the letters completely disappear from the board.

Here's the code in which the problem lies:

def printTurtleBoard():
        pensize(10)
        speed("fastest")
        hideturtle()
        screen.setup(500,500)
        penup()
        X = -150
        Y = -50
        goto(X,Y)
        pendown()
        for i in range(3):
            for i in range(4):
                forward(100)
                right(90)
            penup()
            forward(100)
            pendown()
            for i in range(4):
                forward(100)
                right(90)
            penup()
            forward(100)
            pendown()
            for i in range(4):
                forward(100)
                right(90)
            penup()
            Y = Y + 100
            goto(X,Y)
            pendown()
        randomY = random.randint(0,2)
        randomX = random.randint(0,2)
        global letterO
        def letterO():
            if randomY == 0 and randomX == 0:
                drawer.penup()
                drawer.goto(-100,40)
                drawer.pendown()
                drawer.write("O", align="center",font=("Arial", 75))
            if randomY == 0 and randomX == 1:
                drawer.penup()
                drawer.goto(0,40)
                drawer.pendown()
                drawer.write("O", align="center",font=("Arial", 75))
            if randomY == 0 and randomX == 2:
                drawer.penup()
                drawer.goto(100,40)
                drawer.pendown()
                drawer.write("O", align="center",font=("Arial", 75))
            if randomY == 1 and randomX == 0:
                drawer.penup()
                drawer.goto(-100,-60)
                drawer.pendown()
                drawer.write("O", align="center",font=("Arial", 75))
            if randomY == 1 and randomX == 1:
                drawer.penup()
                drawer.goto(0,-60)
                drawer.pendown()
                drawer.write("O", align="center",font=("Arial", 75))
            if randomY == 1 and randomX == 2:
                drawer.penup()
                drawer.goto(100,-60)
                drawer.pendown()
                drawer.write("O", align="center",font=("Arial", 75))
            if randomY == 2 and randomX == 0:
                drawer.penup()
                drawer.goto(-100,-160)
                drawer.pendown()
                drawer.write("O", align="center",font=("Arial", 75))
            if randomY == 2 and randomX == 1:
                drawer.penup()
                drawer.goto(0,-160)
                drawer.pendown()
                drawer.write("O", align="center",font=("Arial", 75))
            if randomY == 2 and randomX == 2:
                drawer.penup()
                drawer.goto(100,-160)
                drawer.pendown()
                drawer.write("O", align="center",font=("Arial", 75))
    topleftsquare = Turtle()

    topleftsquare.penup()
    topleftsquare.shape("square")
    topleftsquare.color("white")
    topleftsquare.turtlesize(5)
    topleftsquare.goto(-100,100)
    
    topmiddlesquare = Turtle()

    topmiddlesquare.penup()
    topmiddlesquare.shape("square")
    topmiddlesquare.color("white")
    topmiddlesquare.turtlesize(5)
    topmiddlesquare.goto(0,100)
        
    toprightsquare = Turtle()

    toprightsquare.penup()
    toprightsquare.shape("square")
    toprightsquare.color("white")
    toprightsquare.turtlesize(5)
    toprightsquare.goto(100,100)
    
        
    middleleftsquare = Turtle()

    middleleftsquare.penup()
    middleleftsquare.shape("square")
    middleleftsquare.color("white")
    middleleftsquare.turtlesize(5)
    middleleftsquare.goto(-100,0)
    
    middlemiddlesquare = Turtle()

    middlemiddlesquare.penup()
    middlemiddlesquare.shape("square")
    middlemiddlesquare.color("white")
    middlemiddlesquare.turtlesize(5)
    middlemiddlesquare.goto(0,0)
    
    middlerightsquare = Turtle()

    middlerightsquare.penup()
    middlerightsquare.shape("square")
    middlerightsquare.color("white")
    middlerightsquare.turtlesize(5)
    middlerightsquare.goto(100,0)
    
    bottomleftsquare = Turtle()

    bottomleftsquare.penup()
    bottomleftsquare.shape("square")
    bottomleftsquare.color("white")
    bottomleftsquare.turtlesize(5)
    bottomleftsquare.goto(-100,-100)
    
    bottommiddlesquare = Turtle()

    bottommiddlesquare.penup()
    bottommiddlesquare.shape("square")
    bottommiddlesquare.color("white")
    bottommiddlesquare.turtlesize(5)
    bottommiddlesquare.goto(0,-100)
    
    bottomrightsquare = Turtle()

    bottomrightsquare.penup()
    bottomrightsquare.shape("square")
    bottomrightsquare.color("white")
    bottomrightsquare.turtlesize(5)
    bottomrightsquare.goto(100,-100)

    def top_left_square(x,y):
        global place
        global turn
        topleftsquare.penup()
        topleftsquare.pendown()
        topleftsquare.color("white")
        topleftsquare.penup()
        drawer.speed("fastest")
        drawer.hideturtle()
        drawer.penup()
        drawer.goto(-100,40)
        drawer.pendown()
        drawer.write("X", align="center",font=("Arial", 75))
        place = 1
        print(place)
        row = (place - 1) // 3
        column = (place - 1) % 3
        board[row][column] = "X"
        print("\n")
        printBoard()
        print("\n")
        win = checkWin()
        turn = "O"
        print(turn)

    def top_middle_square(x,y):
        global place
        global turn
        topmiddlesquare.penup()
        topmiddlesquare.pendown()
        topmiddlesquare.color("white")
        topmiddlesquare.penup()
        drawer = Turtle()
        drawer.speed("fastest")
        drawer.hideturtle()
        drawer.penup()
        drawer.goto(0,40)
        drawer.pendown()
        drawer.write("X", align="center",font=("Arial", 75))
        place = 2
        print(place)
        row = (place - 1) // 3
        column = (place - 1) % 3
        board[row][column] = "X"
        print("\n")
        printBoard()
        print("\n")
        win = checkWin()
        turn = "O"

    def top_right_square(x,y):
        global place
        global turn
        toprightsquare.penup()
        toprightsquare.pendown()
        toprightsquare.penup()
        drawer = Turtle()
        drawer.speed("fastest")
        drawer.hideturtle()
        drawer.penup()
        drawer.goto(100,40)
        drawer.pendown()
        drawer.write("X", align="center",font=("Arial", 75))
        place = 3
        print(place)
        row = (place - 1) // 3
        column = (place - 1) % 3
        board[row][column] = "X"
        print("\n")
        printBoard()
        print("\n")
        win = checkWin()
        turn = "O"

    def middle_left_square(x,y):
        global place
        global turn
        middleleftsquare.penup()
        middleleftsquare.pendown()
        middleleftsquare.penup()
        drawer = Turtle()
        drawer.speed("fastest")
        drawer.hideturtle()
        drawer.penup()
        drawer.goto(-100,-60)
        drawer.pendown()
        drawer.write("X", align="center",font=("Arial", 75))
        place = 4
        row = (place - 1) // 3
        column = (place - 1) % 3
        board[row][column] = "X"
        print("\n")
        printBoard()
        print("\n")
        win = checkWin()
        turn = "O"

    def middle_middle_square(x,y):
        global place
        global turn
        middlemiddlesquare.penup()
        middlemiddlesquare.pendown()
        middlemiddlesquare.penup()
        drawer = Turtle()
        drawer.speed("fastest")
        drawer.hideturtle()
        drawer.penup()
        drawer.goto(0,-60)
        drawer.pendown()
        drawer.write("X", align="center",font=("Arial", 75))
        place = 5
        row = (place - 1) // 3
        column = (place - 1) % 3
        board[row][column] = "X"
        print("\n")
        printBoard()
        print("\n")
        win = checkWin()
        turn = "O"

    def middle_right_square(x,y):
        global place
        global turn
        middlerightsquare.penup()
        middlerightsquare.pendown()
        middlerightsquare.penup()
        drawer = Turtle()
        drawer.speed("fastest")
        drawer.hideturtle()
        drawer.penup()
        drawer.goto(100,-60)
        drawer.pendown()
        drawer.write("X", align="center",font=("Arial", 75))
        place = 6
        row = (place - 1) // 3
        column = (place - 1) % 3
        board[row][column] = "X"
        print("\n")
        printBoard()
        print("\n")
        win = checkWin()
        turn = "O"

    def bottom_left_square(x,y):
        global place
        global turn
        bottomleftsquare.penup()
        bottomleftsquare.pendown()
        bottomleftsquare.penup()
        drawer = Turtle()
        drawer.speed("fastest")
        drawer.hideturtle()
        drawer.penup()
        drawer.goto(-100,-160)
        drawer.pendown()
        drawer.write("X", align="center",font=("Arial", 75))
        place = 7
        row = (place - 1) // 3
        column = (place - 1) % 3
        board[row][column] = "X"
        print("\n")
        printBoard()
        print("\n")
        win = checkWin()
        turn = "O"

    def bottom_middle_square(x,y):
        global place
        global turn
        bottommiddlesquare.penup()
        bottommiddlesquare.pendown()
        bottommiddlesquare.penup()
        drawer = Turtle()
        drawer.speed("fastest")
        drawer.hideturtle()
        drawer.penup()
        drawer.goto(0,-160)
        drawer.pendown()
        drawer.write("X", align="center",font=("Arial", 75))
        place = 8
        row = (place - 1) // 3
        column = (place - 1) % 3
        board[row][column] = "X"
        print("\n")
        printBoard()
        print("\n")
        win = checkWin()
        turn = "O"

    def bottom_right_square(x,y):
        global place
        global turn
        bottomrightsquare.penup()
        bottomrightsquare.pendown()
        bottomrightsquare.penup()
        drawer = Turtle()
        drawer.speed("fastest")
        drawer.hideturtle()
        drawer.penup()
        drawer.goto(100,-160)
        drawer.pendown()
        drawer.write("X", align="center",font=("Arial", 75))
        place = 9
        row = (place - 1) // 3
        column = (place - 1) % 3
        board[row][column] = "X"
        print("\n")
        printBoard()
        print("\n")
        win = checkWin()
        turn = "O"
            
    while playAgain == "y" and multiplayer == 1:
        try:
            global place
            global turn
            print("\n")
            printTurtleBoard()
            turn = "X"
            print(turn)
            while turn == "X":
                topleftsquare.onclick(top_left_square)
                topmiddlesquare.onclick(top_middle_square)
                toprightsquare.onclick(top_right_square)
                middleleftsquare.onclick(middle_left_square)
                middlemiddlesquare.onclick(middle_middle_square)
                middlerightsquare.onclick(middle_right_square)
                bottomleftsquare.onclick(bottom_left_square)
                bottommiddlesquare.onclick(bottom_middle_square)
                bottomrightsquare.onclick(bottom_right_square)
                win = checkWin()
                if win == 1 or win == 2 or win == 3:
                    play_again()

            if turn == "O":
                counter += 1
                print("Turns counted: ", counter)
                print("\n")
                printBoard()
                print("\n")
                computer()
                win = checkWin()
                if win == 1 or win == 2 or win == 3:
                    play_again()
                    #runs the play_again() function
                global letterO
                letterO()
                printBoard()

Sorry this is really long, but I didn't know any other way I could get help on the question without posting all this code

I've tried giving the turtle a name in the printTurtleBoard() function to see if that would solve anything, but the same problem persisted



Solution 1:[1]

you are making letterO a function() and before that, declaring it as a varible. im not sure if this will fix your main problem, but get rid of the global line. also, you are defining functions() inside of your main function() un-indent them or add them before or after your main function.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 tntrobber123