为了账号安全,请及时绑定邮箱和手机立即绑定

Python Turtle 中的箭头命令

Python Turtle 中的箭头命令

肥皂起泡泡 2022-07-12 15:46:32
我一直在尝试使用画布功能将海龟放入 tkinter。我希望能够制作一个海龟蚀刻素描器,这样我就可以用箭头键控制海龟。我似乎无法让它工作并且不理解它吐出的错误:NameError: name 'Screen' is not defined这是我的代码:import tkinter as tkimport turtlewindow = 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()
查看完整描述

2 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

你必须使用


turtle.Screen()

代替


Screen()

但我看到代码的其他问题。 当按下键时,我会使用tkinter方法来执行功能。bind()


import tkinter as tk

import turtle


# --- functions ---


def k1(event):

    t.forward(1)


def k2(event):

    t.left(1)


def k3(event):

    t.right(1)


def k4(event):

    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()


查看完整回答
反对 回复 2022-07-12
?
RISEBY

TA贡献1856条经验 获得超5个赞

就像你使用RawTurtleinstead of一样Turtle,当你使用嵌入在 tkinter 窗口中的 turtle 时,如果你想要它提供的方法,你需要使用TurtleScreeninstead of :Screen


import tkinter as tk

from turtle import TurtleScreen, RawTurtle


window = 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():

    turtle.forward(1)


def k2():

    turtle.left(1)


def k3():

    turtle.right(1)


def k4():

    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 根窗口,从而导致稍后出现细微的错误(例如图像未加载。)


查看完整回答
反对 回复 2022-07-12
  • 2 回答
  • 0 关注
  • 527 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号