-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathView.py
More file actions
56 lines (48 loc) · 1.61 KB
/
View.py
File metadata and controls
56 lines (48 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import tkinter as tk
import turtle as t
from Grid import ColorGrid
class MiniCubeCanvas(tk.Frame):
def __init__(self, parent = None, **kwargs):
super().__init__(parent)
self.top_canvas = ColorGrid(self,4,4, 200, 200)
self.top_canvas.pack()
self.bottom_canvas = ColorGrid(self,4,4, 200, 200)
self.bottom_canvas.pack()
def render(self, data, top = True):
if top:
self.top_canvas.render(data)
else:
self.bottom_canvas.render(data)
class View:
def __init__(self, parent):
self.canvas = MiniCubeCanvas(parent)
self.canvas.pack()
self.var = tk.StringVar()
self.entry = tk.Entry(parent, textvariable = self.var)
self.entry.pack(fill=tk.X,anchor=tk.W)
frame = tk.Frame(parent)
self.execute = tk.Button(frame, text="Execute")
self.execute.pack(side=tk.LEFT)
self.undo = tk.Button(frame, text="Undo")
self.undo.pack(side=tk.LEFT)
self.reset = tk.Button(frame, text="Reset")
self.reset.pack(side=tk.LEFT)
self.reload_algorithms = tk.Button(frame, text="Reload Algorithms file")
self.reload_algorithms.pack(side=tk.LEFT)
frame.pack()
self.statusbar = tk.Label(parent, text="",bd=1, relief=tk.SUNKEN)
self.statusbar.pack(side=tk.BOTTOM,fill=tk.X, anchor=tk.W)
self.parent = parent
self.widgets = {"parent":self.parent,
"entry":self.entry,
"canvas":self.canvas,
"data": self.var,
"execute_button": self.execute,
"undo_button": self.undo,
"reset_button": self.reset,
"reload_button": self.reload_algorithms,
"statusbar":self.statusbar}
def __getitem__(self, key):
if key not in self.widgets:
return None
return self.widgets[key]