猿问

Python Turtle 中的箭头命令

我一直在尝试使用画布功能将海龟放入 tkinter。我希望能够制作一个海龟蚀刻素描器,这样我就可以用箭头键控制海龟。我似乎无法让它工作并且不理解它吐出的错误:


NameError: name 'Screen' is not defined


这是我的代码:


import tkinter as tk

import turtle


window = tk.Tk()

window.geometry("750x500")

window.resizable(0,0)


app = tk.Canvas(master = window,

                width = 500,

                height = 500,

                bg = "white")

app.pack()

Screen()

turtle = turtle.RawTurtle(app)

turtle = turtle.Screen()


def k1():

    move.forward(1)


def k2():

    move.left(1)


def k3():

    move.right(1)


def k4():

    move.back(1)


turtle.onkey(k1, "Up")

turtle.onkey(k2, "Left")

turtle.onkey(k3, "Right")

turtle.onkey(k4, "Down")


turtle.listen()

window.mainloop()


肥皂起泡泡
浏览 528回答 2
2回答

犯罪嫌疑人X

你必须使用turtle.Screen()代替Screen()但我看到代码的其他问题。 当按下键时,我会使用tkinter方法来执行功能。bind()import tkinter as tkimport turtle# --- functions ---def k1(event):&nbsp; &nbsp; t.forward(1)def k2(event):&nbsp; &nbsp; t.left(1)def k3(event):&nbsp; &nbsp; t.right(1)def k4(event):&nbsp; &nbsp; t.back(1)# --- main ---window = tk.Tk()window.geometry("750x500")window.resizable(False, False)canvas = tk.Canvas(master=window, width=500, height=500, bg="white")canvas.pack()t = turtle.RawTurtle(canvas)window.bind("<Up>", k1)window.bind("<Left>", k2)window.bind("<Right>", k3)window.bind("<Down>", k4)window.mainloop()

RISEBY

就像你使用RawTurtleinstead of一样Turtle,当你使用嵌入在 tkinter 窗口中的 turtle 时,如果你想要它提供的方法,你需要使用TurtleScreeninstead of :Screenimport tkinter as tkfrom turtle import TurtleScreen, RawTurtlewindow = tk.Tk()window.geometry("750x500")window.resizable(0, 0)canvas = tk.Canvas(master=window, width=500, height=500)canvas.pack()screen = TurtleScreen(canvas)turtle = RawTurtle(screen)def k1():&nbsp; &nbsp; turtle.forward(1)def k2():&nbsp; &nbsp; turtle.left(1)def k3():&nbsp; &nbsp; turtle.right(1)def k4():&nbsp; &nbsp; turtle.back(1)screen.onkey(k1, "Up")screen.onkey(k2, "Left")screen.onkey(k3, "Right")screen.onkey(k4, "Down")screen.listen()screen.mainloop()在这种情况下不要使用独立的海龟Screen,因为它可能会创建第二个 tkinter 根窗口,从而导致稍后出现细微的错误(例如图像未加载。)
随时随地看视频慕课网APP

相关分类

Python
我要回答