from tkinter import *
def callback(r,c):
global player
if player == ' X ' and states[x][y] == 0 and stop_game==False:
b[r][c].configure(text= ' X ' , fg= ' blue ' , bg= ' white ' )
states[r][c] = ' X '
player = ' O '
if player == ' O ' and states[r][c] == 0 and stop_game==False:
b[r][c].configure(text= ' O ' , fg= ' orange ' , bg= ' black ' )
states[r][c] = ' O '
player = ' X '
check_for_winner()
def check_for_winner():
global stop_game
for i in range(3):
if states[i][0]==states[i][1]==states[i][2]!=0:
b[i][0].configure(bg= ' grey ' )
b[i][1].configure(bg= ' grey ' )
b[i][2].configure(bg= ' grey ' )
stop_game = True
for i in range(3):
if states[0][i]==states[1][i]==states[2][i]!=0:
b[0][i].configure(bg= ' grey ' )
b[1][i].configure(bg= ' grey ' )
b[2][i].configure(bg= ' grey ' )
stop_game = True
if states[0][0]==states[1][1]==states[2][2]!=0:
b[0][0].configure(bg= ' grey ' )
b[1][1].configure(bg= ' grey ' )
b[2][2].configure(bg= ' grey ' )
stop_game = True
if states[2][0]==states[1][1]==states[0][2]!=0:
b[2][0].configure(bg= ' grey ' )
b[1][1].configure(bg= ' grey ' )
b[0][2].configure(bg= ' grey ' )
stop_game = True
root = Tk()
b = [[0,0,0],
[0,0,0],
[0,0,0]]
states = [[0,0,0],
[0,0,0],
[0,0,0]]
for i in range(3):
for j in range(3):
b[i][j] = Button(font=( ' Verdana ' , 56), width=3, bg= 'yellow' , command = lambda r=i,c=j: callback(r,c))
b[i][j].grid(row = i, column = j)
player = ' X '
stop_game = False
mainloop()
When I ran the code it gives this error:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.6/tkinter/__init__.py", line 1705, in __call__
return self.func(*args)
File "./tic_tac_toe_gui3.py", line 58, in <lambda>
b[i][j] = Button(font=( ' Verdana ' , 56), width=3, bg= 'yellow' , command = lambda r=i,c=j: callback(r,c))
File "./tic_tac_toe_gui3.py", line 7, in callback
if player == ' X ' and states[k][y] == 0 and stop_game==False:
NameError: name 'x' is not defined
I tried declaring a value for x and y but then it gives this error:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.6/tkinter/__init__.py", line 1705, in __call__
return self.func(*args)
File "./tic_tac_toe_gui3.py", line 60, in <lambda>
b[i][j] = Button(font=( ' Verdana ' , 56), width=3, bg= 'yellow' , command = lambda r=i,c=j: callback(r,c))
File "./tic_tac_toe_gui3.py", line 10, in callback
b[r][c].configure(text= ' X ' , fg= ' blue ' , bg= ' white ' )
File "/usr/lib/python3.6/tkinter/__init__.py", line 1485, in configure
return self._configure('configure', cnf, kw)
File "/usr/lib/python3.6/tkinter/__init__.py", line 1476, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: unknown color name " blue "
What do I need to do to correct this code to make it functional and able to run?