Using the Tkinter module in Python 3.5 : 

    import time, random
    from tkinter import *

    class Box( Frame ):
     
       def __init__( self ):      # __init__ runs when Box() executes     
          Frame.__init__( self )  # Frame is the top level component
          self.pack() 
          self.master.title( "Canvas animation" ) 
          self.master.geometry( "400x400" ) # size in pixels
          label = Label(self, text="    Bubbles    ")
          label.grid(row=1, column=1)
          # create Canvas component
          self.myCanvas = Canvas( self ) 
          self.myCanvas.grid(row=2, column=1)
          self.myCanvas.config(bg = 'cyan', height = 350, width = 350)
         
          self.balls = [] #list of balls belongs to the Box 

          self.paint()

          self.animate()

       def paint( self ):
      
          #create a list of balls
          for i in range(35):
         
          x1, y1 = random.randint(35,315), random.randint(35,315)
          x2, y2 = x1 + 30 , y1 + 30 #size
          
          
          ballObjectId = self.myCanvas.create_oval\
                         ( x1, y1, x2, y2, fill = '')
          self.balls.append([ballObjectId, x1, y1])
          
      self.myCanvas.update()   
      print ("paint done")

       def animate( self ):
          #animate the list of balls
          for i in range(1000):
              for i in range(len(self.balls)):
             
              self.myCanvas.delete(self.balls[i][0])   #delete and redraw to move
              self.balls[i][1] += random.randint(-2,2) #change coordinates
              self.balls[i][2] += random.randint(-10,0)
              x1, y1 = self.balls[i][1], self.balls[i][2]
              x2, y2 = x1 + random.randint(30,31) , y1 + random.randint(30,31)
              
              self.balls[i][0]=(self.myCanvas.create_oval\
                            ( x1, y1, x2, y2, fill = ''))
              self.myCanvas.update()   
              
     
    def main():
       Box().mainloop() 

    if __name__ == "__main__":
       main()

This is the code I have so far. The problem I can't seem to solve is I need the balls to move a different speeds and also have different sizes. The final step I need to do is have the balls go to the top and come back up from the bottom. So the final product should be balls of multiple sizes traveling at different speeds to the top of the canvas then appearing back at the bottom. Thanks for any help!