Ошибка при запуске модуля turtle после настройки фона

#python #turtle-graphics

#python #turtle-графика

Вопрос:

Как мне исправить ошибку, возникшую после установки фона при рисовании с помощью turtle?

Я начал изучать программирование с книги «Сначала научись программировать». Я должен создать модуль для создания черепашьей гонки с черепашьей графикой Python. Я выполнил шаги один за другим, но когда я попытался запустить код, в строке «setup()» в конце кода возникла «синтаксическая ошибка».

Я сравнил свой ответ с ответом автора, и все символы были одинаковыми. Затем я скопировал и попытался запустить код автора. Когда я попытался запустить код, появилась только пустая страница. В коде я должен установить фон, который находится в том же каталоге, что и модуль.

 import turtle
import random

turtles = list()

def setup():
    global turtles
    startline = -620
    screen = turtle.Screen()
    screen.setup(1290,720)
    screen.bgpic('pavement.gif')

    turtle_ycor = [-40, -20, 0, 20, 40]
    turtle_color = ['blue', 'red', 'purple', 'brown', 'green']

    for i in range(0, len(turtle_ycor)):
        new_turtle = turtle.Turtle()
        new_turtle.shape('turtle')
        new_turtle.penup()
        new_turtle.setpos(startline, turtle_ycor[i])
        new_turtle.color(turtle_color[i])
        new_turtle.pendown()
        turtles.append(new_turtle)

def race():
    global turtles
    winner = False
    finishline = 590

    while not winner:
        for current_turtle in turtles:
            move = random.randint(0,2)
            current_turtle.forward(move)

            xcor = current_turtle.xcor()
            if (xcor >= finishline):
                winner = True
                winner_color = current_turtle.color()
                print('The winner is', winner_color[0])

setup()
race()
turtle.mainloop()
  

Я удалил строку screen.bgpic('pavement.gif') , и модуль автора работал хорошо, но у моего такая же «синтаксическая ошибка». (Каждый символ был одинаковым, позже я попытался скопировать-вставить каждую часть кода, и ошибка была такой же).
Как я мог установить этот фоновый рисунок?
Сообщение об ошибке:

 Traceback (most recent call last):
  File "/home/viccha/.cache/.fr-mVA9RC/headfirstlearntocode-master/ch7/race_step3.py", line 41, in <module>
    setup()
  File "/home/viccha/.cache/.fr-mVA9RC/headfirstlearntocode-master/ch7/race_step3.py", line 11, in setup
    screen.bgpic('pavement.gif')
  File "/usr/lib/python3.6/turtle.py", line 1481, in bgpic
    self._bgpics[picname] = self._image(picname)
  File "/usr/lib/python3.6/turtle.py", line 479, in _image
    return TK.PhotoImage(file=filename)
  File "/usr/lib/python3.6/tkinter/__init__.py", line 3545, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "/usr/lib/python3.6/tkinter/__init__.py", line 3501, in __init__
    self.tk.call(('image', 'create', imgtype, name,)   options)
_tkinter.TclError: couldn't open "pavement.gif": no such file or directory
  

Комментарии:

1. Пожалуйста, покажите всю ошибку sytanx в вашем коде

Ответ №1:

У меня все работало нормально (за исключением части с race (), потому что у меня нет функции

Вы забыли импортировать модуль turtle

 import turtle

def setup():
   global turtles
   startline = -620
   screen = turtle.Screen()
   screen.setup(1290,720)
   screen.bgpic('pavement.gif')

#the end of the code:

setup()
race()
turtle.mainloop()
  

Комментарии:

1. И? Также, если бы вы могли вставить сюда сообщение об ошибке, которое было бы полезно

Ответ №2:

Показанное сообщение об ошибке вызвано этой строкой:

 screen.bgpic('pavement.gif')
  

Как вы заметили, вы можете избежать ошибки, закомментировав строку:

 # screen.bgpic('pavement.gif')
  

Тогда ваши turtles должны работать просто отлично. Вы можете добавить эту строку обратно, когда / если у вас есть pavement.gif файл, доступный для использования в качестве фонового изображения для окна. Веб-сайт, связанный с книгой, может предоставить это. Но для такой простой программы любое GIF-изображение соответствующего размера должно работать нормально — посмотрите на Google Images.

Комментарии:

1. У меня есть pavement.gif в той же папке, что и код. Я попытался скопировать его в другую папку, потому что исходная папка является zip-папкой, но это не сработало