| 71 | |
| 72 | |
| 73 | def _percolator(parent): # htest # |
| 74 | import tkinter as tk |
| 75 | |
| 76 | class Tracer(Delegator): |
| 77 | def __init__(self, name): |
| 78 | self.name = name |
| 79 | Delegator.__init__(self, None) |
| 80 | |
| 81 | def insert(self, *args): |
| 82 | print(self.name, ": insert", args) |
| 83 | self.delegate.insert(*args) |
| 84 | |
| 85 | def delete(self, *args): |
| 86 | print(self.name, ": delete", args) |
| 87 | self.delegate.delete(*args) |
| 88 | |
| 89 | top = tk.Toplevel(parent) |
| 90 | top.title("Test Percolator") |
| 91 | x, y = map(int, parent.geometry().split('+')[1:]) |
| 92 | top.geometry("+%d+%d" % (x, y + 175)) |
| 93 | text = tk.Text(top) |
| 94 | p = Percolator(text) |
| 95 | pin = p.insertfilter |
| 96 | pout = p.removefilter |
| 97 | t1 = Tracer("t1") |
| 98 | t2 = Tracer("t2") |
| 99 | |
| 100 | def toggle1(): |
| 101 | (pin if var1.get() else pout)(t1) |
| 102 | def toggle2(): |
| 103 | (pin if var2.get() else pout)(t2) |
| 104 | |
| 105 | text.pack() |
| 106 | text.focus_set() |
| 107 | var1 = tk.IntVar(parent) |
| 108 | cb1 = tk.Checkbutton(top, text="Tracer1", command=toggle1, variable=var1) |
| 109 | cb1.pack() |
| 110 | var2 = tk.IntVar(parent) |
| 111 | cb2 = tk.Checkbutton(top, text="Tracer2", command=toggle2, variable=var2) |
| 112 | cb2.pack() |
| 113 | |
| 114 | |
| 115 | if __name__ == "__main__": |