39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
from repr import Repr
|
|
from Tkinter import *
|
|
|
|
class FrameViewer:
|
|
|
|
def __init__(self, root, frame):
|
|
self.root = root
|
|
self.frame = frame
|
|
self.top = Toplevel(self.root)
|
|
self.repr = Repr()
|
|
self.repr.maxstring = 60
|
|
self.load_variables()
|
|
|
|
def load_variables(self):
|
|
row = 0
|
|
if self.frame.f_locals is not self.frame.f_globals:
|
|
l = Label(self.top, text="Local Variables",
|
|
borderwidth=2, relief="raised")
|
|
l.grid(row=row, column=0, columnspan=2, sticky="ew")
|
|
row = self.load_names(self.frame.f_locals, row+1)
|
|
l = Label(self.top, text="Global Variables",
|
|
borderwidth=2, relief="raised")
|
|
l.grid(row=row, column=0, columnspan=2, sticky="ew")
|
|
row = self.load_names(self.frame.f_globals, row+1)
|
|
|
|
def load_names(self, dict, row):
|
|
names = dict.keys()
|
|
names.sort()
|
|
for name in names:
|
|
value = dict[name]
|
|
svalue = self.repr.repr(value)
|
|
l = Label(self.top, text=name)
|
|
l.grid(row=row, column=0, sticky="w")
|
|
l = Entry(self.top, width=60, borderwidth=0)
|
|
l.insert(0, svalue)
|
|
l.grid(row=row, column=1, sticky="w")
|
|
row = row+1
|
|
return row
|