mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	Features: text editor with syntax coloring and undo; subclassed into interactive Python shell which adds history.
		
			
				
	
	
		
			46 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from Tkinter import *
 | 
						|
 | 
						|
class Outline:
 | 
						|
    
 | 
						|
    def __init__(self, root=None):
 | 
						|
        if not root:
 | 
						|
            import Tkinter
 | 
						|
            root = Tkinter._default_root
 | 
						|
        if not root:
 | 
						|
            root = top = Tk()
 | 
						|
        else:
 | 
						|
            top = Toplevel(root)
 | 
						|
        top.wm_title("Outline")
 | 
						|
        self.canvas = canvas = Canvas(top, width=400, height=300,
 | 
						|
                                      borderwidth=2, relief="sunken",
 | 
						|
                                      background="#FFBBBB")
 | 
						|
        canvas.pack(expand=1, fill="both")
 | 
						|
        self.items = []
 | 
						|
    
 | 
						|
    def additem(self, level, open, label):
 | 
						|
        x = 15*level + 5
 | 
						|
        y = 15*len(self.items) + 5
 | 
						|
        if open:
 | 
						|
            id1 = self.canvas.create_polygon(x+3, y+3, x+13, y+3, x+8, y+8,
 | 
						|
                                             outline="black",
 | 
						|
                                             fill="green")
 | 
						|
        else:
 | 
						|
            id1 = self.canvas.create_polygon(x+3, y+4, x+7, y+8, x+3, y+12,
 | 
						|
                                             outline="black",
 | 
						|
                                             fill="red")
 | 
						|
        w = Entry(self.canvas, borderwidth=0, background="#FFBBBB", width=0)
 | 
						|
        w.insert("end", label)
 | 
						|
	id2 = self.canvas.create_window(x+15, y, anchor="nw", window=w)
 | 
						|
        self.items.append((level, open, label, id1, w, id2))
 | 
						|
        
 | 
						|
 | 
						|
def main():
 | 
						|
    o = Outline()
 | 
						|
    o.additem(0, 1, "hello world")
 | 
						|
    o.additem(1, 0, "sub1")
 | 
						|
    o.additem(1, 1, "sub2")
 | 
						|
    o.additem(2, 0, "sub2.a")
 | 
						|
    o.additem(2, 0, "sub2.b")
 | 
						|
    o.additem(1, 0, "sub3")
 | 
						|
 | 
						|
main()
 |