Adds very simple gui to copycat
This commit is contained in:
150507
copycat.log
150507
copycat.log
File diff suppressed because it is too large
Load Diff
@ -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
56
copycat/gui.py
Executable 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()
|
||||||
Reference in New Issue
Block a user