I have created several sites that sell tickets to classes and the like, using Exp:resso Store. It should work fine for what you want. You would want to add each event as a "product", and you could use the product modifiers for different ticket levels if necessary (orchestra vs. balcony, etc.). If you set the modifier to use multiple SKUs you can accommodate differing numbers of tickets at each level.
For printing tickets, you would want to set up a member account page (you could use Freemember or Zoo Visitor to make this process much easier) that lists all of a person's orders using the {exp:store:orders member_id="CURRENT_USER"} tag pair. You will link from there to a new template that uses something like the following (assuming your link was constructed like: {path="account/orders/{order_hash}/{entry_id}"}
) to get information about the event they registered for:
{exp:store:orders order_hash="{segment_3}"}
{items}{if entry_id == {segment_4}}
{!-- Whatever information you want to display on your ticket --}
{/if}{/items}
{/exp:store:orders}
Of course, you could also link to that same template from the order confirmation page.