':param drs: ``DrtExpression``, The DRS to be drawn
:param size_canvas: bool, True if the canvas size should be the exact size of the DRS
:param canvas: ``Canvas`` The canvas on which to draw the DRS.  If none is given, create a new canvas.'

def __init__(self, drs, size_canvas=True, canvas=None):

    master = None
    if (not canvas):
        master = Tk()
        master.title(u'DRT')
        font = Font(family=u'helvetica', size=12)
        if size_canvas:
            canvas = Canvas(master, width=0, height=0)
            canvas.font = font
            self.canvas = canvas
            (right, bottom) = self._visit(drs, self.OUTERSPACE, self.TOPSPACE)
            width = max((right + self.OUTERSPACE), 100)
            height = (bottom + self.OUTERSPACE)
            canvas = Canvas(master, width=width, height=height)
        else:
            canvas = Canvas(master, width=300, height=300)
        canvas.pack()
        canvas.font = font
    self.canvas = canvas
    self.drs = drs
    self.master = master
