1 import Tkinter
2 from nltk_lite.draw import TreeWidget
3 from nltk_lite.draw import CanvasFrame
4
5 """A class that draws parse trees in a simple Tk window."""
6
9 if len(trees) == 0:
10 print "No trees to display."
11 return
12
13 newroot = False
14 if root is None:
15 root = Tkinter.Tk()
16 window = root
17 newroot = True
18 else:
19 window = Tkinter.Toplevel(root)
20
21 window.title("Parse Tree")
22 window.geometry("600x400")
23 self.cf = CanvasFrame(window)
24 self.cf.pack(side='top', expand=1, fill='both')
25 buttons = Tkinter.Frame(window)
26 buttons.pack(side='bottom', fill='x')
27
28 self.spin = Tkinter.Spinbox(buttons, from_=1, to=len(trees),
29 command=self.showtree, width=3)
30 if len(trees) > 1: self.spin.pack(side='left')
31 self.label = Tkinter.Label(buttons, text="of %d" % len(trees))
32 if len(trees) > 1: self.label.pack(side='left')
33 self.done = Tkinter.Button(buttons, text="Done", command=window.destroy)
34 self.done.pack(side='right')
35 self.printps = Tkinter.Button(buttons, text="Print to Postscript", command=self.cf.print_to_file)
36 self.printps.pack(side='right')
37
38 self.trees = trees
39 self.treeWidget = None
40 self.showtree()
41 if newroot: root.mainloop()
42
44 try: n = int(self.spin.get())
45 except ValueError: n=1
46 if self.treeWidget is not None: self.cf.destroy_widget(self.treeWidget)
47 self.treeWidget = TreeWidget(self.cf.canvas(),
48 self.trees[n-1], draggable=1, shapeable=1)
49 self.cf.add_widget(self.treeWidget, 0, 0)
50