<p>这在我的编程课上出现过很多次。我的解决方案也有点复杂,但它为我正确地添加了滚动条(不幸的是,随着屏幕大小的增长,滚动条似乎不会自动为我添加),而且我不需要自己跟踪边界框。</p>
<p>设置如下:</p>
<pre><code>import turtle
import Tkinter
root = Tkinter.Tk()
START_WIDTH = 700
START_HEIGHT = 700
frame = Tkinter.Frame(root, width=START_WIDTH, height=START_HEIGHT)
frame.grid_rowconfigure(0, weight=1)
frame.grid_columnconfigure(0, weight=1)
xscrollbar = Tkinter.Scrollbar(frame, orient=Tkinter.HORIZONTAL)
xscrollbar.grid(row=1, column=0, sticky=Tkinter.E+Tkinter.W)
yscrollbar = Tkinter.Scrollbar(frame, orient=Tkinter.VERTICAL)
yscrollbar.grid(row=0, column=1, sticky=Tkinter.N+Tkinter.S)
canvas = Tkinter.Canvas(frame, width=START_WIDTH, height=START_HEIGHT,
scrollregion=(0, 0, START_WIDTH, START_HEIGHT),
xscrollcommand=xscrollbar.set,
yscrollcommand=yscrollbar.set)
canvas.grid(row=0, column=0, sticky=Tkinter.N+Tkinter.S+Tkinter.E+Tkinter.W)
xscrollbar.config(command=canvas.xview)
yscrollbar.config(command=canvas.yview)
frame.pack()
turt = turtle.RawTurtle(canvas)
</code></pre>
<p>现在您可以像使用其他创建的海龟对象一样使用<code>turt</code>。每次你想确保你可以滚动到所有已绘制的内容时,运行</p>
<pre><code>canvas.config(scrollregion=canvas.bbox(Tkinter.ALL))
</code></pre>
<p>有关自定义画布和滚动条的文档,请参见<a href="http://effbot.org/zone/tkinter-scrollbar-patterns.htm" rel="nofollow">http://effbot.org/zone/tkinter-scrollbar-patterns.htm</a>和<a href="http://effbot.org/tkinterbook/canvas.htm" rel="nofollow">http://effbot.org/tkinterbook/canvas.htm</a>。</p>