【发布时间】:2022-01-15 13:38:40
【问题描述】:
我有一个功能齐全的海龟游戏。我将它移到了 tkinter 窗口,它的工作方式与以前类似,但 screen.tracer(0) 似乎没有做任何事情(这意味着它不会按预期停止屏幕更新)。此外,screen.addshape("shape") 似乎也不起作用,如果有人对此有所了解。我想知道当屏幕嵌入到 tkinter 画布中时,这两种方法是否实际上都不起作用。其余的方法,例如screen.listen(),按预期工作。
下面是一些示例代码,我试图让它工作,但跟踪器显然保持打开状态,因为当按下"Up" 时,乌龟继续在屏幕上绘制:
from turtle import TurtleScreen, RawTurtle
from tkinter import *
def go():
turtle.forward(20)
window = Tk()
canvas = Canvas()
canvas.pack()
screen = TurtleScreen(canvas)
turtle = RawTurtle(canvas)
screen.tracer(0)
screen.listen()
screen.onkey(fun=go, key="Up")
window.mainloop()
【问题讨论】:
-
这能回答你的问题吗? What does turtle.tracer() do?
-
您的问题有一个重复,并且很好地解释了
turtle.tracer它的论点、推荐用途、怪癖和python 3 陷阱here。penup和pendown按预期工作。 -
@ReblochonMasque 不幸的是,没有。这很好地解释了
turtle.tracer(0)所做的事情,将更新设置为 False,但它没有解释为什么 tkinter 会影响这一点。在上面的例子中,screen.tracer(0)应该是这样,所以在调用screen.update()之前屏幕不会更新。但它会继续更新。
标签: tkinter canvas turtle-graphics python-turtle