Adds very simple gui to copycat

This commit is contained in:
LSaldyt
2017-09-27 11:38:32 -06:00
parent 4348554fa7
commit 9a2a30ea4c
3 changed files with 101584 additions and 48981 deletions
+101521 -48980
View File
File diff suppressed because it is too large Load Diff
+7 -1
View File
@@ -3,6 +3,7 @@ from .randomness import Randomness
from .slipnet import Slipnet from .slipnet import Slipnet
from .temperature import Temperature from .temperature import Temperature
from .workspace import Workspace from .workspace import Workspace
from .gui import GUI
class Reporter(object): class Reporter(object):
@@ -24,13 +25,15 @@ class Reporter(object):
class Copycat(object): class Copycat(object):
def __init__(self, rng_seed=None, reporter=None): def __init__(self, rng_seed=None, reporter=None, showgui=True):
self.coderack = Coderack(self) self.coderack = Coderack(self)
self.random = Randomness(rng_seed) self.random = Randomness(rng_seed)
self.slipnet = Slipnet() self.slipnet = Slipnet()
self.temperature = Temperature() self.temperature = Temperature()
self.workspace = Workspace(self) self.workspace = Workspace(self)
self.reporter = reporter or Reporter() self.reporter = reporter or Reporter()
self.showgui = showgui
self.gui = GUI('Copycat')
def mainLoop(self, lastUpdate): def mainLoop(self, lastUpdate):
currentTime = self.coderack.codeletsRun currentTime = self.coderack.codeletsRun
@@ -47,6 +50,9 @@ class Copycat(object):
self.reporter.report_coderack(self.coderack) self.reporter.report_coderack(self.coderack)
self.reporter.report_temperature(self.temperature) self.reporter.report_temperature(self.temperature)
self.reporter.report_workspace(self.workspace) self.reporter.report_workspace(self.workspace)
if self.showgui:
self.gui.update()
return lastUpdate return lastUpdate
def runTrial(self): def runTrial(self):
Executable
+56
View File
@@ -0,0 +1,56 @@
#!/usr/bin/env python3
import sys
import tkinter as tk
import tkinter.ttk as ttk
from tkinter import scrolledtext
from tkinter import filedialog
class MainApplication(ttk.Frame):
def __init__(self, parent, *args, **kwargs):
ttk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
self.create_widgets()
self.columnconfigure(0, weight=1)
self.rowconfigure(0, weight=1)
def create_widgets(self):
"""Contains all widgets in main application."""
main_label = tk.Label(self, text="abc:abd::ijk:?", background='black', foreground='white')
main_label.grid(column=0, row=0, columnspan=9, rowspan=4)
temp_label = tk.Label(self, text='temp')
temp_label.grid(column=9, row=0, rowspan=1, sticky=tk.E)
example_net = [
('left', 100),
('right', 100),
('a', 10),
('b', 9),
('rightmost', 100)
]
MAX_COLUMNS = 10
MAX_ROWS = 4
row = 0
for i, (name, amount) in enumerate(example_net):
column = i % MAX_COLUMNS
if column == 0:
row += 1
if row + 1 >= MAX_ROWS:
break
l = tk.Label(self, text='{}\n({})'.format(name, amount))
l.grid(column=column, row=row, sticky=tk.SE)
class GUI(object):
def __init__(self, title):
self.root = tk.Tk()
self.root.title(title)
self.app = MainApplication(self.root)
self.app.pack(side='top', fill='both', expand=True)
def update(self):
self.root.update_idletasks()
self.root.update()