Я получил сообщение об ошибке (NameError: имя 'width' не определено), когда я
запустите этот код
Когда я запустил этот код, я получил ошибку:
_tkinter.TclError: неверный тип события или keysym "right"
Этот код беспорядок, а именно:
Он открывает два окна, комбинируя черепаху и ткинтер неконтролируемым образом. Когда черепаха автономна, мы используем Turtle
и Screen
, но при внедрении в tkinter мы используем RawTurtle
и TurtleScreen
. Вместо того, чтобы второе окно появлялось как побочный эффект игнорирования правил, вы действительно должны иметь контроль над созданием этого окна.
Этот код используется для установки заголовка корневого окна как побочного эффекта передачи None
в качестве аргумента XView
в Text()
:
T = текст (root, root.title ("Controls"), высота = 8, ширина = 60)
Вы используете неправильные названия клавиш для стрелок - они должны быть 'Left'
и 'Right
'для функции onkey()
черепахи, а не 'left'
и 'right'
.
Вот мое понимание того, как должен создаваться этот тип программы:
import tkinter as tk
from turtle import RawTurtle, ScrolledCanvas, TurtleScreen
root = tk.Tk()
instructions = tk.Toplevel()
instructions.title("Controls")
text = tk.Text(instructions, height=8, width=60)
text.pack()
text.insert(tk.END, """Right arrow key = move forward\nLeft arrow key = move
backward\nr = turn right\nl = turn left\n
u = pen up\nd = pen down\nh = go home\nc = clear""")
canvas = ScrolledCanvas(root, width=500, height=500)
canvas.pack()
screen = TurtleScreen(canvas)
turtle = RawTurtle(screen, 'turtle')
turtle.pencolor('blue')
turtle.width(2)
screen.onkey(turtle.penup, "u")
screen.onkey(turtle.pendown, "d")
screen.onkey(turtle.clear, "c")
screen.onkey(turtle.home, "h")
screen.onkey(lambda: turtle.forward(5), "Right")
screen.onkey(lambda: turtle.backward(5), "Left")
screen.onkey(lambda: turtle.left(5), "l")
screen.onkey(lambda: turtle.right(5), "r")
screen.listen()
screen.mainloop()