-
-
Save jediminer543/49a834af5105ec3c06d2 to your computer and use it in GitHub Desktop.
Python LMC Emulator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
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