有人知道如何防止滚动条出现在 Python 中的小窗口尺寸的 Turtle Graphics 窗口上吗?
以下代码生成下面的图像。对于 600 像素 x 600 像素的屏幕,不会出现滚动条。
import turtle
TURTLE_SIZE = 20
TRIANGLE_SIZE = 120
screen = turtle.Screen()
screen.setup(400, 400)
triangle = turtle.Turtle("triangle")
triangle.shapesize(TRIANGLE_SIZE / TURTLE_SIZE)
triangle.color("pink")
triangle.right(30)][1]][1]
最佳答案
Does anyone know how to prevent scrollbars appearing on the Turtle Graphics window in Python
答案可能是在 tkinter 中使用嵌入的 turtle ,而不是独立。由于独立 turtle 默认使用 ScrolledCanvas
,而嵌入式 turtle 允许您使用它,或者只是坚持使用基本的 Canvas
。
也就是说,以下是使用独立 turtle 实现此目的的三种不同方法:
1) 只需将方形窗口从 400 x 400 增加到 420 x 420:
screen.setup(420, 420)
这是有效的,因为 turtle 已在其全局 _CFG
配置字典中存储了窗口和 Canvas 的默认大小:
_CFG = {
"width" : 0.5, # Screen
"height" : 0.75,
"canvwidth" : 400,
"canvheight": 300,
# ...
}
在此 Canvas 尺寸下方,会出现滚动条。除了有一个捏造因素来解释窗口 chrome,我们可以在 setworldcooperatives()
中看到:
self.screensize(wx-20, wy-20)
因此,任何 420 x 320 或更大的窗口默认情况下都不应获得滚动条,除非 Canvas 也重新调整。
2) 通过"turtle.cfg"
文件操作_CFG
字典。与通过 turtle.pen()
方法即时创建的人造 _pd
pen 字典不同,turtle._CFG
没有运行时用户界面code> 字典,除非我们在引擎盖下探索:
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) 修补独立 turtle 的 _Root
类的 setupcanvas
方法,以替换 ScrolledCanvas
的通用 Canvas
。这消除了对任何魔数(Magic Number)的需要,并且将简单地关闭滚动:
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)
# ...
关于Python turtle 滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57203415/