Ошибка Tkinter: _tkinter.Ошибка TclError: неизвестный параметр «-1»

#python #tkinter

Вопрос:

Я создаю игру в крестики-нолики, и я совершенно новичок в tkinter и python. У меня большая проблема с ошибкой, упомянутой в заголовке «Ошибка Tkinter: _tkinter.TclError: неизвестный параметр «-1″», и я хочу знать, откуда он взялся. Я проверил все проблемы с аналогичной ошибкой, но не смог найти такую, как у меня.
Ниже код создает сетку 3×3, и я заметил, что при нажатии на кнопки в первой строке ошибка «неизвестный параметр» -0″», при нажатии на вторую строку ошибка
«неизвестный параметр»-1″», а при нажатии на третью строку ошибка «неизвестный параметр «-2″».

 from tkinter import *  root = Tk() frame = Frame(root) frame.pack()  'player user' playerA = 'X' 'player computer using random' playerB = 'O'  def change_button_value_after_click(r, c):  if b['text'] == "":  b[str(r)][str(c)] = playerA   else:  print("This button was clicked!")  'board creation' board = [[col for col in range(3)] for row in range(3)] for row in range(len(board)):  for col in range(len(board[row])):  b = Button(frame, text="", width=5,  command=lambda r=row,c=col:change_button_value_after_click(r,c))  b.grid(row=row, column=col)  root.mainloop()  

Комментарии:

1. это происходит потому, что в основном вы делаете это b['1']['1'] с каждой строкой, которую вы пытаетесь открыть некоторые приписывают ее нет, b есть кнопка, вы не можете создать кнопку, как это: Button(1='some value') во-первых из-за названия которых начинаются с чисел не пускают, а во-вторых, потому что она не имеет такого атрибута, чего вы пытаетесь достичь? вы действительно собирались использовать b его там?

2. Я хочу изменить текстовое значение кнопки, на которую был нажат, с пустой строки на переменную PlayerA, которая равна «X».

3. таким образом, вы действительно хотите использовать board , в каких хранилищах хранятся кнопки, доступные для строки и столбца: if not board[r][c]['text']: board[r][c]['text'] = playerA

4. это дает мне следующее: ошибка типа: объект «int» не доступен для подписки ://

5. вам нужно добавить кнопки в эти списки