Skip to content

Instantly share code, notes, and snippets.

@jediminer543
Forked from shutebt01/LMC.py
Created October 22, 2014 20:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jediminer543/49a834af5105ec3c06d2 to your computer and use it in GitHub Desktop.
Save jediminer543/49a834af5105ec3c06d2 to your computer and use it in GitHub Desktop.
Python LMC Emulator
'''
Created on 22 Oct 2014
@author: shutebt01
'''
import tkinter
from tkinter.constants import *
tk = tkinter.Tk();
def callback(sv):
try:
print(sv.get())
except (AttributeError):
print(sv)
AssemblyCells = [None]*100
AssemblyCellsSV = [None]*100
for i in range(0, 100, 1):
AssemblyCellsSV[i] = tkinter.StringVar()
ittrvar = AssemblyCellsSV[i]
ittrvar.set("HLT")
ittrvar.trace("w", lambda name, index, mode, ittrvar=ittrvar: callback(ittrvar))
AssemblyLbls = [None]*100
MachineCells = [None]*100
MachineCellsSV = [None]*100
for i in range(0, 100, 1):
MachineCellsSV[i] = tkinter.StringVar()
ittrvar = MachineCellsSV[i]
ittrvar.set("000")
ittrvar.trace("w", lambda name, index, mode, ittrvar=ittrvar: callback(ittrvar))
MachineLbls = [None]*100
tk.title("Little Man Computer")
frame = tkinter.Frame(tk, relief=RIDGE, borderwidth=2)
frame.pack(fill=BOTH,expand=1)
#Assembly Code GUI Section
AssemblyLabel = tkinter.Label(frame, text = "Assembly")
AssemblyLabel.grid(row=0, column=0)
AssemblyFrame = tkinter.Frame(frame, relief=RIDGE, borderwidth=2, width=200, height=500)
AssemblyFrame.grid(row=1, column=0, rowspan=6)
AssemblyCanvas = tkinter.Canvas(AssemblyFrame, width=100, height=250)
AssemblyCanvas.pack(side=LEFT, fill=BOTH)
AssemblyScroll = tkinter.Scrollbar(AssemblyFrame, command=AssemblyCanvas.yview)
AssemblyCanvas.config(yscrollcommand=AssemblyScroll.set, scrollregion=(-75,0,50,2090))
AssemblyScroll.pack(side=RIGHT, fill=Y)
AssemblyCanvasFrame = tkinter.Frame(AssemblyCanvas)
for i in range(0, 100, 1):
AssemblyLbls[i] = tkinter.Label(AssemblyCanvasFrame, text = str(i))
AssemblyLbls[i].grid(row=i, column=0)
AssemblyCells[i] = tkinter.Entry(AssemblyCanvasFrame, width=10, textvariable=AssemblyCellsSV[i])
AssemblyCells[i].grid(row=i, column=1)
AssemblyCanvas.create_window(0, 1030, window=AssemblyCanvasFrame)
# Machine Code GUI Section
MachineLabel = tkinter.Label(frame, text = "Machine Code")
MachineLabel.grid(row=0, column=3)
MachineFrame = tkinter.Frame(frame, relief=RIDGE, borderwidth=2, width=200, height=500)
MachineFrame.grid(row=1, column=3, rowspan=6)
MachineCanvas = tkinter.Canvas(MachineFrame, width=100, height=250)
MachineCanvas.pack(side=LEFT, fill=BOTH)
MachineScroll = tkinter.Scrollbar(MachineFrame, command=MachineCanvas.yview)
MachineCanvas.config(yscrollcommand=MachineScroll.set, scrollregion=(-75,0,50,2090))
MachineScroll.pack(side=RIGHT, fill=Y)
MachineCanvasFrame = tkinter.Frame(MachineCanvas)
for i in range(0, 100, 1):
MachineLbls[i] = tkinter.Label(MachineCanvasFrame, text = str(i))
MachineLbls[i].grid(row=i, column=0)
MachineCells[i] = tkinter.Entry(MachineCanvasFrame, width=10, textvariable=MachineCellsSV[i])
MachineCells[i].grid(row=i, column=1)
MachineCanvas.create_window(0, 1030, window=MachineCanvasFrame)
#Other GUI Stuff
tk.mainloop();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment