有谁知道如何防止 Turtle 上出现滚动条
Python中的图形窗口
答案可能是在 tkinter 中使用 turtleembedded 而不是 standalone。因为独立的海龟默认使用ScrolledCanvas,而嵌入式海龟允许你使用它,或者干脆坚持基本的Canvas。
也就是说,以下是使用独立海龟实现此目的的三种不同方法:
1) 只需将方形窗口从 400 x 400 增加到 420 x 420:
screen.setup(420, 420)
之所以可行,是因为 turtle 已将窗口和画布的默认大小存储在其全局 _CFG 配置字典中:
_CFG = {
"width" : 0.5, # Screen
"height" : 0.75,
"canvwidth" : 400,
"canvheight": 300,
# ...
}
低于此画布大小,会出现滚动条。除了我们可以在setworldcoordinates() 中看到的窗口 chrome 有一个软糖因素:
self.screensize(wx-20, wy-20)
因此,除非画布也重新调整,否则任何 420 x 320 或更大的窗口都不应默认获得滚动条。
2) 通过"turtle.cfg" 文件操作_CFG 字典。与turtle.pen() 方法动态创建的假_pd 笔字典不同,turtle._CFG 字典没有运行时用户界面,除非我们在引擎盖下四处寻找:
from turtle import Screen, Turtle, _CFG
TURTLE_SIZE = 20
TRIANGLE_SIZE = 120
_CFG.update({"canvwidth": 380, "canvheight": 380}) # 400 - 20
screen = Screen()
screen.setup(400, 400)
triangle = Turtle("triangle")
triangle.shapesize(TRIANGLE_SIZE / TURTLE_SIZE)
triangle.color("pink")
triangle.right(30)
screen.exitonclick()
3) 修补独立海龟的_Root 类的setupcanvas 方法,以用通用Canvas 替换ScrolledCanvas。这消除了对任何幻数的需要,并且会简单地关闭滚动:
import tkinter as TK
from turtle import Screen, Turtle, _Root
def setupcanvas(self, width, height, cwidth, cheight):
self._canvas = TK.Canvas(self, width=cwidth, height=cheight)
self._canvas.pack(expand=1, fill="both")
_Root.setupcanvas = setupcanvas
TURTLE_SIZE = 20
TRIANGLE_SIZE = 120
screen = Screen()
screen.setup(400, 400)
# ...