#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. вам нужно добавить кнопки в эти списки