Index: sample_scripts/ammos_viewer.py
===================================================================
--- sample_scripts/ammos_viewer.py	(revision 577ce87d7c43b5ec174ce7a8ae84ef5246c52001)
+++ sample_scripts/ammos_viewer.py	(revision 09b290d891789615c8dc68e41a90131d1582bf37)
@@ -19,8 +19,11 @@
         self.file = open(self.file_name, 'rb')
         self.bytes = self.file.read(-1)
-        self.cycle = self.ammos_container.unique_frame_sizes()[0]
-        self.cache = 500000000
+        self.cycle = tk.IntVar()
+        self.cycle.set(self.ammos_container.unique_frame_sizes()[0])
+        self.cache = tk.IntVar()
+        self.cache.set(500000000)
         self.canvas_size = (800, 600)
-        self.offset = 0
+        self.offset = tk.IntVar()
+        self.offset.set(0)
         self.buildup()
 
@@ -34,30 +37,27 @@
         self.canvas = tk.Canvas(image_frame, bg="#000000", width=self.canvas_size[0], height=self.canvas_size[1])
         self.canvas.pack()
-        # display_size = self.canvas_size[0] * self.canvas_size[1]
-        # bytes_to_display = randbytes(display_size)
-        # if len(self.bytes) < display_size:
-        #    bytes_to_display = self.bytes[self.offset:] + bytearray([0xff] * (display_size-len(self.bytes)-self.offset))
-        current_bytes = b"".join([self.bytes[each: each+self.canvas_size[0]] for each in range(0, len(self.bytes),
-                                                                                               self.cycle)])
-        print("Bytes size", len(current_bytes))
-        pil_image = Image.frombytes("L", self.canvas_size, current_bytes)
+        pil_image = Image.frombytes("L", self.canvas_size, self.current_bytes())
         self.image = ImageTk.PhotoImage(pil_image)
         # pil_image.show()
         button_frame = tk.Frame(self)
-        self.canvas.create_image(0, 0, anchor='nw', image=self.image)
+        self.image_id = self.canvas.create_image(0, 0, anchor='nw', image=self.image)
         button_frame.pack(side="right")
 
-        tk.Label(button_frame, text='Cycle in bits').pack(side=tk.TOP)
-        self.cycle_entry = tk.Entry(button_frame)
-        # self.cycle_entry.set()
+        tk.Label(button_frame, text='Cycle in bytes').pack(side=tk.TOP)
+        self.cycle_entry = tk.Entry(button_frame, text=self.cycle)
         self.cycle_entry.pack(side=tk.TOP)
 
         tk.Label(button_frame, text='Cache in bytes').pack(side=tk.TOP)
-        self.cache_entry = tk.Entry(button_frame)
+        self.cache_entry = tk.Entry(button_frame, text=self.cache)
         self.cache_entry.pack(side=tk.TOP)
 
-        tk.Label(button_frame, text='Offset in bits').pack(side=tk.TOP)
-        self.offset_entry = tk.Entry(button_frame)
+        tk.Label(button_frame, text='Offset in bytes').pack(side=tk.TOP)
+        self.offset_entry = tk.Entry(button_frame, text=self.offset)
         self.offset_entry.pack(side=tk.TOP)
+
+        tk.Button(button_frame,
+                  text="Update",
+                  width=self.default_button_width,
+                  command=self.update_canvas).pack(side=tk.TOP, fill=tk.BOTH, expand=True)
 
         tk.Button(
@@ -72,4 +72,12 @@
             width=self.default_button_width,
             command=self.quit).pack(side="top", fill="both", expand=True)
+
+    def current_bytes(self):
+        return b"".join([self.bytes[each: each+self.canvas_size[0]] for each in range(self.offset.get(),
+                                                                                      len(self.bytes),
+                                                                                      self.cycle.get())])
+    def update_canvas(self):
+        self.image = ImageTk.PhotoImage(Image.frombytes("L", self.canvas_size, self.current_bytes()))
+        self.canvas.itemconfig(self.image_id, image=self.image)
 
     def load_file(self):
