Python turtle 滚动条

标签 python turtle-graphics

有人知道如何防止滚动条出现在 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]

enter image description here

最佳答案

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)

# ...

enter image description here

关于Python turtle 滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57203415/

相关文章:

python - argparse 接受一切

python - turtle 模块没有属性颜色?

Python 多只 turtle (看似)同时移动

python - 在python中怎么可能是一个圆圈?

Python链式比较

python - 使用 Python Requests 登录到 CloudFlare 背后的网站

python - 如何从有序字典中选择最佳对?

python - for循环中的比较运算符

python - 当按一个键将 turtle 向上移动时,我的其他 turtle 卡住了

python - 与另一个物体接触时改变物体颜色