2つのを作成し、それらをキャンバスのおよびオプションScrollbar
として設定する必要があります。次に、を最大の幅と高さで構成すると、必要に応じてスコルバーが大きくなります。xscrollcommand
yscrollcommand
scrollregion
コードのをこの非常に基本的な実装に置き換えると、次Canvas
の結果が表示されます。
from Tkinter import *
class ScrollableCanvas(Canvas):
def __init__(self, master, *args, **options):
self.frame = Frame(master)
Canvas.__init__(self, self.frame, *args, **options)
self.xscrollbar = Scrollbar(self.frame, command=self.xview, orient=HORIZONTAL)
self.yscrollbar = Scrollbar(self.frame, command=self.yview)
self.config(xscrollcommand=self.xscrollbar.set, yscrollcommand=self.yscrollbar.set)
def create_line(self, *args, **options):
Canvas.create_line(self, args, **options)
self._resize(*args)
def _resize(self, *args):
maxwidth = max(args[0], args[2], int(self['width']))
maxheight = max(args[1], args[3], int(self['height']))
self.config(scrollregion=(0, 0, maxwidth, maxheight))
def grid(self, *args, **options):
self.frame.grid(*args, **options)
Canvas.grid(self, row=0, column=0)
self.xscrollbar.grid(row=1, column=0, sticky=E+W)
self.yscrollbar.grid(row=0, column=1, sticky=N+S)