| 446 | class ScrolledCanvas: |
| 447 | |
| 448 | def __init__(self, master, **opts): |
| 449 | if 'yscrollincrement' not in opts: |
| 450 | opts['yscrollincrement'] = 17 |
| 451 | self.master = master |
| 452 | self.frame = Frame(master) |
| 453 | self.frame.rowconfigure(0, weight=1) |
| 454 | self.frame.columnconfigure(0, weight=1) |
| 455 | self.canvas = Canvas(self.frame, **opts) |
| 456 | self.canvas.grid(row=0, column=0, sticky="nsew") |
| 457 | self.vbar = Scrollbar(self.frame, name="vbar") |
| 458 | self.vbar.grid(row=0, column=1, sticky="nse") |
| 459 | self.hbar = Scrollbar(self.frame, name="hbar", orient="horizontal") |
| 460 | self.hbar.grid(row=1, column=0, sticky="ews") |
| 461 | self.canvas['yscrollcommand'] = self.vbar.set |
| 462 | self.vbar['command'] = self.canvas.yview |
| 463 | self.canvas['xscrollcommand'] = self.hbar.set |
| 464 | self.hbar['command'] = self.canvas.xview |
| 465 | self.canvas.bind("<Key-Prior>", self.page_up) |
| 466 | self.canvas.bind("<Key-Next>", self.page_down) |
| 467 | self.canvas.bind("<Key-Up>", self.unit_up) |
| 468 | self.canvas.bind("<Key-Down>", self.unit_down) |
| 469 | self.canvas.bind("<MouseWheel>", wheel_event) |
| 470 | if self.canvas._windowingsystem == 'x11': |
| 471 | self.canvas.bind("<Button-4>", wheel_event) |
| 472 | self.canvas.bind("<Button-5>", wheel_event) |
| 473 | #if isinstance(master, Toplevel) or isinstance(master, Tk): |
| 474 | self.canvas.bind("<Alt-Key-2>", self.zoom_height) |
| 475 | self.canvas.focus_set() |
| 476 | def page_up(self, event): |
| 477 | self.canvas.yview_scroll(-1, "page") |
| 478 | return "break" |