47 lines
1.5 KiB
Python
47 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()
|