你必须创建两个Scrollbar
S和它们设置为画布的xscrollcommand
和yscrollcommand
选项。然后,当您将scrollregion
配置为最大宽度和高度时,如果需要,scollbars会增长。
如果这个非常基本的实现来替代你的代码的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)
如果我解决我的帧大小将帆布滚动? – lokesh 2013-03-19 11:02:31
如果您创建并将某些['scrollbar'](http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/scrollbar.html)窗口小部件连接到它将使用的画布。 – martineau 2013-03-19 11:15:22