Create the graphical user interface.

def createGUI( self ):
        '''Create the graphical user interface.'''
        our_font = "Helvetica 16 bold"
        small_font = "Helvetica 9 bold"
        self.root_frame = Frame(self.root)
        if self.action_space == 'continuous':
            desc = "Running continuous-action mission.\nUse the mouse to turn, WASD to move."
        else:
            desc = "Running discrete-action mission.\nUse the arrow keys to turn and move."
        Label(self.root_frame, text=desc,font = our_font,wraplength=640).pack(padx=5, pady=5)
        self.canvas = Canvas(self.root_frame, borderwidth=0, highlightthickness=0, width=640, height=480, bg="gray" )
        self.canvas.bind('<Motion>',self.onMouseMoveInCanvas)
        self.canvas.bind('<Button-1>',self.onLeftMouseDownInCanvas)
        self.canvas.bind('<ButtonRelease-1>',self.onLeftMouseUpInCanvas)
        if sys.platform == 'darwin': right_mouse_button = '2' # on MacOSX, the right button is 'Button-2'
        else:                        right_mouse_button = '3' # on Windows and Linux the right button is 'Button-3'
        self.canvas.bind('<Button-'+right_mouse_button+'>',self.onRightMouseDownInCanvas)
        self.canvas.bind('<ButtonRelease-'+right_mouse_button+'>',self.onRightMouseUpInCanvas)
        self.canvas.bind('<KeyPress>',self.onKeyPressInCanvas)
        self.canvas.bind('<KeyRelease>',self.onKeyReleaseInCanvas)
        self.canvas.pack(padx=5, pady=5)
        self.entry_frame = Frame(self.root_frame)
        Label(self.entry_frame, text="Type '/' to enter command:",font = small_font).pack(padx=5, pady=5, side=LEFT)
        self.command_entry = Entry(self.entry_frame,font = small_font)
        self.command_entry.bind('<Key>',self.onKeyInCommandEntry)
        self.command_entry.pack(padx=5, pady=5, side=LEFT)
        Button(self.entry_frame, text='Send', command=self.onSendCommand,font = small_font).pack(padx=5, pady=5, side=LEFT)
        self.entry_frame.pack()
        self.observation = Label(self.root_frame, text='observations will appear here', wraplength=640, font = small_font)
        self.observation.pack()
        self.reward = Label(self.root_frame, text='rewards will appear here', wraplength=640, font = small_font)
        self.reward.pack()
        self.root_frame.pack()
        self.mouse_event = self.prev_mouse_event = None