Python _tkinter.TclError из root.mainloop () после вызова root.destroy () - PullRequest
0 голосов
/ 14 ноября 2018

Почему я получаю ошибку с моим tkinter mainloop() о недопустимом имени команды canvas?Я создаю настольную игру ИИ, и я создал основной цикл.Я использую 2 списка для своих идентификаторов проверки, black_id и white_id, только здесь не изображенные:

def main_game_AI():
    print("Read the README file first to learn how to move.")
    move = input("What do you move?:")
    checker_move = int(move)
    where = input("What direction will you move?:")
    canvas.move(black_id[checker_move],-23,-50)
    print("Robot: OOOOOOoooooh!! Tricky decision! I play:")
    canvas.move(white_id[3], -23,50)
    white3 = 18   
print("We start with the",first_side,"side.")
while gameOn == True:
    main_game_AI()
    root.destroy()
    root.mainloop()

В моем цикле запускается main_game_AI(), затем я запускаю root.mainloop() дляTkinter GUI для работы.Но я должен использовать root.destroy(), поэтому цикл продолжается.Это хорошо работает для первой итерации.Но когда я вставил тестовые данные для второй итерации, я получил следующую ошибку:

Traceback (most recent call last):
  File "chineseCheckersAI.py", line 86, in <module>
    main_game_AI()
  File "chineseCheckersAI.py", line 77, in main_game_AI
    canvas.move(black_id[checker_move],-23,-50)
  File "/anaconda3/lib/python3.7/tkinter/__init__.py", line 2588, in move
    self.tk.call((self._w, 'move') + args)
_tkinter.TclError: invalid command name ".!canvas"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...