mirror of
https://github.com/python/cpython.git
synced 2024-11-27 03:45:08 +08:00
504b0bf066
Much has changed -- too much, in fact, to write down. The big news is that there's a standard way to write IDLE extensions; see extend.txt. Some sample extensions have been provided, and some existing code has been converted to extensions. Probably the biggest new user feature is a new search dialog with more options, search and replace, and even search in files (grep). This is exactly as downloaded from my laptop after returning from the holidays -- it hasn't even been tested on Unix yet.
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
|