Я работаю над проблемой домашнего задания для моего курса Python, который должен отображать автомобиль (понял), а затем автомобиль должен имитировать движение через окно до его конца, а затем перезапускаться в начале.У меня есть функция гонки, которая должна делать это, но она ничего не делает.У меня чертовски много времени с классами и ткинтером.Я знаю, что мне нужно увеличивать значение x каждый раз, когда оно зацикливается и обновляется, чтобы машина выглядела как движущаяся, я просто не знаю, как это реализовать.Правильно ли написано мое логическое значение?Я пытался что-то изменить с помощью функции несколькими способами, но я не могу заставить ее что-то делать, поэтому я должен что-то упустить.
ОБНОВЛЕНИЕ: Я переместил метод гонки вкласс, и вызвал его в конструкторе.Я поместил оператор print, чтобы получить значение x в методе race, и он показывает, что x увеличивается правильно, но когда я запускаю программу, моя машина исчезает.Таким образом, он обновляет значение x, как и должно, но не отображает графику.Код обновлен ниже
Любые предложения приветствуются!
# Import tkinter
from tkinter import *
# Set the height and Width of the window
width = 800
height = 800
# Create race car class with canvas as the argument
class RacingCar(Canvas):
# Constructor
def __init__(self, master, width, height):
# Constructor
Canvas.__init__(self, master, width = width, height = height)
# Create x and y variables for starting position
self.x = 10
self.y = 40
# Display the car
self.display_car()
self.race()
# Function to display car
def display_car(self):
# Delete original car
self.delete("car")
# Create first wheel
self.create_oval(self.x + 10, self.y - 10, self.x + 20,\
self.y, fill = "black", tags = "car")
# Create the second wheel
self.create_oval(self.x + 30, self.y - 10, self.x + 40,\
self.y, fill = "black", tags = "car")
# Create the body
self.create_rectangle(self.x, self.y - 20, self.x + 50,\
self.y - 10, fill = "green", tags = "car")
# Create the roof
self.create_polygon(self.x + 10, self.y - 20, self.x + 20,\
self.y - 30, self.x + 30, self.y - 30,\
self.x + 40, self.y - 20, fill = "green",\
tags = "car")
def race():
while True:
if self.x < width:
self.x += 2
else:
self.x = 0
self.after(88)
self.update()
window = Tk()
window.title("Racing Car")
racecar = RacingCar(window, width = 240, height = 50 )
racecar.pack()
window.mainloop()