2 回答

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

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 根窗口,從而導致稍后出現細微的錯誤(例如圖像未加載。)
添加回答
舉報