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 101587 additions and 48984 deletions

150507
copycat.log

File diff suppressed because it is too large Load Diff

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):

56
copycat/gui.py Executable file
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()