I'm trying to use tkinter buttons to remove elements from the list. When I click on button it removes the last element in the list instead of the one it should: characters.remove(character). I think I know why is this happening but I don't know how to fix that.
Example:
column = 1
characters = ['c1', 'c2', 'c3']
for character in characters:
    Button(frame, text=character,
           command=lambda: (click_sound(), characters.remove(character))).grid(row=1, column=column)
    column += 1
Code:
        def submit(number, player_index, username, character):
            for widget in window_frame.winfo_children():
                widget.grid_forget()
            settings[f'player_{player_index}_username'] = username.capitalize()
            settings[f'player_{player_index}_character'] = character
            with open('resources/settings.json', 'w') as f:
                dump(settings, f, indent=3)
            player_index += 1
            if player_index > number:
                window.destroy()
                for widget in TkinterClass.main_frame.winfo_children():
                    widget.grid_forget()
                Button(TkinterClass.main_frame, text='Play', command=lambda: (PygameClass.click_sound(), startfile('Monopoly.py'), quit()), width=30).grid()
            else:
                character_index = 1
                Label(window_frame, text=f'Enter player\'s {player_index} name: ').grid(row=0, column=0)
                name = Entry(window_frame, borderwidth=3)
                name.grid(row=0, column=1, columnspan=len(characters))
                Label(window_frame, text='Select your character: ').grid(row=1, column=0)
                for character in characters:
                    Button(window_frame, text=character.capitalize(),
                           command=lambda: (
                           PygameClass.click_sound(), characters.remove(character),
                           submit(number, player_index, name.get(), character))).grid(row=1, column=character_index)
                    character_index += 1
        window = Toplevel()
        window.title('Monopoly')
        window_frame = Frame(window, padx=5, pady=5)
        window_frame.grid(padx=5, pady=5)
        player_index = 1
        column = 1
        characters = ['cruise', 'car', 'cap', 'derby']
        Label(window_frame, text=f'Enter player\'s {player_index} name: ').grid(row=0, column=0)
        name = Entry(window_frame, borderwidth=3)
        name.grid(row=0, column=1, columnspan=len(characters))
        Label(window_frame, text='Select your character: ').grid(row=1, column=0)
        for character in characters:
            Button(window_frame, text=character.capitalize(),
                   command=lambda: (PygameClass.click_sound(), characters.remove(character), submit(number, player_index, name.get(), character)))\
                .grid(row=1, column=character_index)
            column += 1
 
    