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 .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
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