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 .temperature import Temperature
from .workspace import Workspace
from .gui import GUI
class Reporter(object):
@ -24,13 +25,15 @@ class Reporter(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.random = Randomness(rng_seed)
self.slipnet = Slipnet()
self.temperature = Temperature()
self.workspace = Workspace(self)
self.reporter = reporter or Reporter()
self.showgui = showgui
self.gui = GUI('Copycat')
def mainLoop(self, lastUpdate):
currentTime = self.coderack.codeletsRun
@ -47,6 +50,9 @@ class Copycat(object):
self.reporter.report_coderack(self.coderack)
self.reporter.report_temperature(self.temperature)
self.reporter.report_workspace(self.workspace)
if self.showgui:
self.gui.update()
return lastUpdate
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()