Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 生成和取消生成画布小部件并同时移动它们_Python_Tkinter - Fatal编程技术网

Python 生成和取消生成画布小部件并同时移动它们

Python 生成和取消生成画布小部件并同时移动它们,python,tkinter,Python,Tkinter,我试图通过一个简单的程序学习Python,该程序使用tkinter生成正方形。 将它们在画布上移动,然后将其拆下 2个问题 我该如何让他们失望?我找到了关于canvas.destroy()方法的信息,但是或者它什么也不做,或者我得到了一个超出范围的错误 我创建了一个类,它创建了正方形,并在里面有一个移动函数。我通过一个按钮调用类实例上的move函数。 它正在工作,但现在我想一次给它们打电话,这样它们就可以独立移动了。问题是,如果我单击按钮,例如Nº2,已经移动的正方形(实例Nº1)将停止运行。

我试图通过一个简单的程序学习Python,该程序使用
tkinter
生成正方形。 将它们在画布上移动,然后将其拆下

2个问题

  • 我该如何让他们失望?我找到了关于
    canvas.destroy()
    方法的信息,但是或者它什么也不做,或者我得到了一个超出范围的错误

  • 我创建了一个类,它创建了正方形,并在里面有一个移动函数。我通过一个按钮调用类实例上的move函数。 它正在工作,但现在我想一次给它们打电话,这样它们就可以独立移动了。问题是,如果我单击按钮,例如Nº2,已经移动的正方形(实例Nº1)将停止运行。 为什么?我怎样才能解决这个问题

  • 这里我的代码只有汽车类我想其余的都不重要:(原谅我,如果它很愚蠢…我是新来的

    import tkinter as tk
    from tkinter import messagebox
    import time
    import random
    
    root = tk.Tk()
    root.title("Timer TrafficLight")
    root.geometry("500x500")
    # root.resizable(0,0)
    
    canvas = tk.Canvas(root, width= 500, height= 500, bg="darkgray")
    canvas.pack(anchor = "s")
    
    class Street(object):
    
        img_street_vertical = tk.PhotoImage(file="Street_vertical.gif")
        img_street_horizontal = tk.PhotoImage(file="Street_horizontal.gif")
    
        def __init__(self, x, y, alignment):
            self.x = x
            self.y = y
            self.alignment = alignment
            self.img = self.set_img()
            self.street = canvas.create_image(self.x, self.y, image = self.img, anchor = "nw")
    
        def set_img(self):
            if self.alignment == "h":
                return self.img_street_horizontal
            elif self.alignment == "v":
                return self.img_street_vertical
            else:
                print ("Please set the alingment to eigher h or v ")
    
    .
    .
    .
    
    
    class TrafficLight(object):
    
        def __init__(self, rx1, ry1, rx2, ry2):
            #Trafficlight outer lines
            self.rx1 = rx1
            self.ry1 = ry1
            self.rx2 = rx2
            self.ry2 = ry2
            self.lines = canvas.create_rectangle(self.rx1, self.ry1, self.rx2, self.ry2)
    
            #Light Bulbs
    
            self.top_state = "gray"
            self.middle_state = "gray"
            self.under_state = "gray"
            self.total_state = "gray"
            self.after_id = ""
    
            self.top_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 5, self.rx1 + 25, self.ry1 + 20, fill = "gray")
            self.middle_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 25, self.rx1 + 25, self.ry1 + 40, fill = "gray")
            self.under_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 45, self.rx1 + 25, self.ry1 + 60, fill = "gray")
    
        def set_off(self):
            canvas.delete(self.top_bulb)
            canvas.delete(self.middle_bulb)
            canvas.delete(self.under_bulb)
    
            self.top_state = "gray"
            self.middle_state = "gray"
            self.under_state = "gray"
            self.total_state = "gray"
    
    
            self.top_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 5, self.rx1 + 25, self.ry1 + 20, fill = self.top_state)
            self.middle_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 25, self.rx1 + 25, self.ry1 + 40, fill = self.middle_state)
            self.under_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 45, self.rx1 + 25, self.ry1 + 60, fill = self.under_state)
    
    
        def set_green(self):
            canvas.delete(self.top_bulb)
            canvas.delete(self.middle_bulb)
            canvas.delete(self.under_bulb)
    
            self.top_state = "gray"
            self.middle_state = "gray"
            self.under_state = "green"
            self.total_state = "green"
    
            self.top_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 5, self.rx1 + 25, self.ry1 + 20, fill = self.top_state)
            self.middle_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 25, self.rx1 + 25, self.ry1 + 40, fill = self.middle_state)
            self.under_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 45, self.rx1 + 25, self.ry1 + 60, fill = self.under_state)
    
    
        def set_yellow(self):
            canvas.delete(self.top_bulb)
            canvas.delete(self.middle_bulb)
            canvas.delete(self.under_bulb)
    
            self.top_state = "gray"
            self.middle_state = "yellow"
            self.under_state = "gray"
            self.total_state = "yellow"
    
            self.top_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 5, self.rx1 + 25, self.ry1 + 20, fill = self.top_state)
            self.middle_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 25, self.rx1 + 25, self.ry1 + 40, fill = self.middle_state)
            self.under_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 45, self.rx1 + 25, self.ry1 + 60, fill = self.under_state)
    
        def set_red(self):
            canvas.delete(self.top_bulb)
            canvas.delete(self.middle_bulb)
            canvas.delete(self.under_bulb)
    
            self.top_state = "red"
            self.middle_state = "gray"
            self.under_state = "gray"
            self.total_state = "red"
    
            self.top_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 5, self.rx1 + 25, self.ry1 + 20, fill = self.top_state)
            self.middle_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 25, self.rx1 + 25, self.ry1 + 40, fill = self.middle_state)
            self.under_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 45, self.rx1 + 25, self.ry1 + 60, fill = self.under_state)
    
        def timer(self):
            red_timer = 50
            yellow_timer = 40
            green_timer = 50
    
            if self.total_state == "gray":
                self.set_red()
                self.after_id = canvas.after(red_timer, self.timer)
            elif self.total_state == "red":
                self.set_green()
                self.after_id = canvas.after(green_timer, self.timer)
            elif self.total_state == "yellow":
                self.set_red()
                self.after_id = canvas.after(red_timer, self.timer)
            elif self.total_state ==  "green":
                self.set_yellow()
                self.after_id = canvas.after(yellow_timer, self.timer)
            else:
                messagebox.showerror("Error", "Traffic Light had invalid Value Initialisation only allows Values: gray,red,yellow or green")
                exit()
    
        def stop_timer(self):
            canvas.after_cancel(self.after_id)
    
        def walk(self):
            #need to include a "if" in case that state is "red" or "yellow" when the button is pressed.
            self.stop_timer()
            canvas.after(5000, self.set_yellow)
            canvas.after(5000, self.set_red)
            canvas.after(10000, self.timer)
    
    
    class Car(object):
    
        spawns = ["left", "right", "top", "buttom"]
    
        xd = 0
        yd = 0
    
        def __init__(self):
            self.spawnpoint = random.choice(self.spawns)
            self.spawn_coords = self.spawn()
            self.square = canvas.create_rectangle(self.spawn_coords[0], self.spawn_coords[1], self.spawn_coords[2], self.spawn_coords[3], fill="red", tags = "test")
            self.coords = canvas.coords(self.square)
    
        def spawn(self):
            if self.spawnpoint == "left":
                return [10,260,40,270]
            elif self.spawnpoint == "right":
                return [485,220,455,230]
            elif self.spawnpoint == "top":
                return [220,10,230,40]
            elif self.spawnpoint == "buttom":
                return [260,485,270,455]
            else:
                print ("invalid spawn Point")
                exit()
    
        def move(self):
            while True:
                if self.spawnpoint == "left":
                    self.xd = 5
                    self.yd = 0
    
                    if self.coords[2] + self.xd >= 500:
                        print ("Left reached")
                        return False
    
                elif self.spawnpoint == "right":
                    self.xd = -5
                    self.yd = 0
    
                    if self.coords[0] + self.xd <= 0:
                        print ("Right reached")
                        return False
    
                elif self.spawnpoint == "top":
                    self.xd = 0
                    self.yd = 5
    
                    if self.coords[3] + self.xd >= 500:
                        print ("top reached")
                        return False
    
                elif self.spawnpoint == "buttom":
                    self.xd = 0
                    self.yd = -5
    
                    if self.coords[1] + self.xd <= 0:
                        print ("buttom reached")
                        return False
    
                else:
                    print ("invalid spawn Point")
                    exit()
    
                canvas.move(self.square, self.xd, self.yd)
                self.coords = canvas.coords(self.square)
                root.update()
                # canvas.after(500, self.move)
                time.sleep(.05)
    
            #X1 = 0
            #X2 = 2
            #y1 = 1
            #y2 = 3
    
    
    
    
    
    
    #between x1 and x2 = 30 pixels
    #between y and y2 = 65 pixels
    l1 = TrafficLight(170, 140, 200, 205)
    l2 = TrafficLight(300, 140, 330, 205)
    l3 = TrafficLight(170, 295, 200, 360)
    l4 = TrafficLight(300, 295, 330, 360)
    
    s1= Street(0, 208, "v")
    s2= Street(208, 0, "h")
    
    c1= Car()
    c2= Car()
    c3= Car()
    c4= Car()
    
    
    m = Menus(root)
    
    while True:
      c1.move()
      c2.move()
      c3.move()
      c4.move()
      time.sleep(.05)
    
    root.mainloop()
    
    将tkinter作为tk导入
    从tkinter导入消息框
    导入时间
    随机输入
    root=tk.tk()
    根标题(“计时器交通灯”)
    根几何(“500x500”)
    #根目录。可调整大小(0,0)
    canvas=tk.canvas(根,宽度=500,高度=500,bg=“darkgray”)
    canvas.pack(anchor=“s”)
    类街道(对象):
    img_street_vertical=tk.PhotoImage(file=“street_vertical.gif”)
    img_street_horizontal=tk.PhotoImage(file=“street_horizontal.gif”)
    定义初始(自、x、y、对齐):
    self.x=x
    self.y=y
    自对准=对准
    self.img=self.set_img()
    self.street=canvas.create_image(self.x,self.y,image=self.img,anchor=“nw”)
    def设置(自我):
    如果self.alignment==“h”:
    返回self.img_street_水平
    elif self.alignment==“v”:
    返回self.img_street_垂直
    其他:
    打印(“请将对齐设置为八个h或v”)
    .
    .
    .
    类交通灯(对象):
    定义初始化(self,rx1,ry1,rx2,ry2):
    #交通灯外线
    self.rx1=rx1
    self.ry1=ry1
    self.rx2=rx2
    self.ry2=ry2
    self.lines=canvas.create_矩形(self.rx1、self.ry1、self.rx2、self.ry2)
    #灯泡
    self.top\u state=“灰色”
    self.middle_state=“灰色”
    self.under_state=“灰色”
    self.total_state=“灰色”
    self.after_id=“”
    self.top\u灯泡=画布。创建椭圆形(self.rx1+5、self.ry1+5、self.rx1+25、self.ry1+20、fill=“灰色”)
    self.middle\u灯泡=画布。创建椭圆形(self.rx1+5、self.ry1+25、self.rx1+25、self.ry1+40、fill=“灰色”)
    self.under_bulb=画布。创建椭圆形(self.rx1+5、self.ry1+45、self.rx1+25、self.ry1+60、fill=“灰色”)
    def设置(自身):
    canvas.delete(self.top\u灯泡)
    canvas.delete(self.middle\u灯泡)
    canvas.delete(self.under_bulb)
    self.top\u state=“灰色”
    self.middle_state=“灰色”
    self.under_state=“灰色”
    self.total_state=“灰色”
    self.top\u灯泡=画布。创建椭圆形(self.rx1+5、self.ry1+5、self.rx1+25、self.ry1+20、填充=self.top\u状态)
    self.middle\u灯泡=画布。创建椭圆(self.rx1+5、self.ry1+25、self.rx1+25、self.ry1+40、填充=self.middle\u状态)
    self.under\u灯泡=画布。创建椭圆(self.rx1+5,self.ry1+45,self.rx1+25,self.ry1+60,填充=self.under\u状态)
    def设置为绿色(自):
    canvas.delete(self.top\u灯泡)
    canvas.delete(self.middle\u灯泡)
    canvas.delete(self.under_bulb)
    self.top\u state=“灰色”
    self.middle_state=“灰色”
    self.under_state=“绿色”
    self.total_state=“绿色”
    self.top\u灯泡=画布。创建椭圆形(self.rx1+5、self.ry1+5、self.rx1+25、self.ry1+20、填充=self.top\u状态)
    self.middle\u灯泡=画布。创建椭圆(self.rx1+5、self.ry1+25、self.rx1+25、self.ry1+40、填充=self.middle\u状态)
    self.under\u灯泡=画布。创建椭圆(self.rx1+5,self.ry1+45,self.rx1+25,self.ry1+60,填充=self.under\u状态)
    def设置为黄色(自):
    canvas.delete(self.top\u灯泡)
    canvas.delete(self.middle\u灯泡)
    canvas.delete(self.under_bulb)
    self.top\u state=“灰色”
    self.middle_state=“黄色”
    self.under_state=“灰色”
    self.total_state=“黄色”
    self.top\u灯泡=画布。创建椭圆形(self.rx1+5、self.ry1+5、self.rx1+25、self.ry1+20、填充=self.top\u状态)
    self.middle\u灯泡=画布。创建椭圆(self.rx1+5、self.ry1+25、self.rx1+25、self.ry1+40、填充=self.middle\u状态)
    self.under\u灯泡=画布。创建椭圆(self.rx1+5,self.ry1+45,self.rx1+25,self.ry1+60,填充=self.under\u状态)
    def设置为红色(自):
    canvas.delete(self.top\u灯泡)
    canvas.delete(self.middle\u灯泡)
    canvas.delete(self.under_bulb)
    self.top\u state=“红色”
    self.middle_state=“灰色”
    self.under_state=“灰色”
    self.total_state=“红色”
    self.top\u灯泡=画布。创建椭圆形(self.rx1+5、self.ry1+5、self.rx1+25、self.ry1+20、填充=self.top\u状态)
    self.middle\u灯泡=画布。创建椭圆(self.rx1+5、self.ry1+25、self.rx1+25、self.ry1+40、填充=self.middle\u状态)
    self.under\u灯泡=画布。创建椭圆(self.rx1+5,self.ry1+45,self.rx1+25,self.ry1+60,填充=self.under\u状态)
    def定时器(自):
    红色定时器=50
    黄色定时器=40
    绿色定时器=50
    如果self.total_state==“灰色”:
    self.set_red()
    self.after\u id=canvas.after(红色计时器,self.timer)
    elif self.total_state==“红色”:
    self.set_green()
    self.after\u id=canvas.after(绿色定时器,self.timer)
    elif self.total_state==“黄色”:
    self.set_red()
    self.after\u id=canvas.after(红色计时器,self.timer)
    elif self.total_state==“绿色”:
    self.set_yellow()
    self.after\u id=canvas.after(黄色计时器,self.timer)
    其他:
    messagebox.showerror(“错误”,
    
    import tkinter as tk
    from tkinter import messagebox
    import time
    import random
    
    root = tk.Tk()
    root.title("Timer Traffic-Light")
    root.geometry("500x500")
    
    canvas = tk.Canvas(root, width=500, height=500, bg="darkgray")
    canvas.pack(anchor="s")
    
    class Street(object):
    
        img_street_vertical = tk.PhotoImage(file="Street_vertical.gif")
        img_street_horizontal = tk.PhotoImage(file="Street_horizontal.gif")
    
        def __init__(self, x, y, alignment):
            self.x = x
            self.y = y
            self.alignment = alignment
            self.img = self.set_img()
            self.street = canvas.create_image(self.x, self.y, image=self.img, anchor="nw")
    
        def set_img(self):
            if self.alignment == "h":
                return self.img_street_horizontal
            elif self.alignment == "v":
                return self.img_street_vertical
            else:
                print ("Please set the alingment to eigher h or v ")
    
    
    class TrafficLight(object):
    
        def __init__(self, rx1, ry1, rx2, ry2):
            #Trafficlight outer lines
            self.rx1 = rx1
            self.ry1 = ry1
            self.rx2 = rx2
            self.ry2 = ry2
            self.lines = canvas.create_rectangle(self.rx1, self.ry1, self.rx2, self.ry2)
    
            #Light Bulbs
    
            self.top_state = "gray"
            self.middle_state = "gray"
            self.under_state = "gray"
            self.total_state = "gray"
            self.after_id = ""
    
            self.top_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 5, self.rx1 + 25, self.ry1 + 20, fill = "gray")
            self.middle_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 25, self.rx1 + 25, self.ry1 + 40, fill = "gray")
            self.under_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 45, self.rx1 + 25, self.ry1 + 60, fill = "gray")
    
        def set_off(self):
            canvas.delete(self.top_bulb)
            canvas.delete(self.middle_bulb)
            canvas.delete(self.under_bulb)
    
            self.top_state = "gray"
            self.middle_state = "gray"
            self.under_state = "gray"
            self.total_state = "gray"
    
    
            self.top_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 5, self.rx1 + 25, self.ry1 + 20, fill = self.top_state)
            self.middle_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 25, self.rx1 + 25, self.ry1 + 40, fill = self.middle_state)
            self.under_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 45, self.rx1 + 25, self.ry1 + 60, fill = self.under_state)
    
    
        def set_green(self):
            canvas.delete(self.top_bulb)
            canvas.delete(self.middle_bulb)
            canvas.delete(self.under_bulb)
    
            self.top_state = "gray"
            self.middle_state = "gray"
            self.under_state = "green"
            self.total_state = "green"
    
            self.top_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 5, self.rx1 + 25, self.ry1 + 20, fill = self.top_state)
            self.middle_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 25, self.rx1 + 25, self.ry1 + 40, fill = self.middle_state)
            self.under_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 45, self.rx1 + 25, self.ry1 + 60, fill = self.under_state)
    
    
        def set_yellow(self):
            canvas.delete(self.top_bulb)
            canvas.delete(self.middle_bulb)
            canvas.delete(self.under_bulb)
    
            self.top_state = "gray"
            self.middle_state = "yellow"
            self.under_state = "gray"
            self.total_state = "yellow"
    
            self.top_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 5, self.rx1 + 25, self.ry1 + 20, fill = self.top_state)
            self.middle_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 25, self.rx1 + 25, self.ry1 + 40, fill = self.middle_state)
            self.under_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 45, self.rx1 + 25, self.ry1 + 60, fill = self.under_state)
    
        def set_red(self):
            canvas.delete(self.top_bulb)
            canvas.delete(self.middle_bulb)
            canvas.delete(self.under_bulb)
    
            self.top_state = "red"
            self.middle_state = "gray"
            self.under_state = "gray"
            self.total_state = "red"
    
            self.top_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 5, self.rx1 + 25, self.ry1 + 20, fill = self.top_state)
            self.middle_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 25, self.rx1 + 25, self.ry1 + 40, fill = self.middle_state)
            self.under_bulb = canvas.create_oval(self.rx1 + 5, self.ry1 + 45, self.rx1 + 25, self.ry1 + 60, fill = self.under_state)
    
        def timer(self):
            red_timer = 50
            yellow_timer = 40
            green_timer = 50
    
            if self.total_state == "gray":
                self.set_red()
                self.after_id = canvas.after(red_timer, self.timer)
            elif self.total_state == "red":
                self.set_green()
                self.after_id = canvas.after(green_timer, self.timer)
            elif self.total_state == "yellow":
                self.set_red()
                self.after_id = canvas.after(red_timer, self.timer)
            elif self.total_state ==  "green":
                self.set_yellow()
                self.after_id = canvas.after(yellow_timer, self.timer)
            else:
                messagebox.showerror("Error", "Traffic Light had invalid Value Initialisation only allows Values: gray,red,yellow or green")
                exit()
    
        def stop_timer(self):
            canvas.after_cancel(self.after_id)
    
        def walk(self):
            #need to include a "if" in case that state is "red" or "yellow" when the button is pressed.
            self.stop_timer()
            canvas.after(5000, self.set_yellow)
            canvas.after(5000, self.set_red)
            canvas.after(10000, self.timer)
    class Car(object):
    
        spawns = ["left", "right", "top", "buttom"]
    
        xd = 0
        yd = 0
    
        def __init__(self):
            self.spawnpoint = random.choice(self.spawns)
            self.spawn_coords = self.spawn()
            self.square = canvas.create_rectangle(self.spawn_coords[0], self.spawn_coords[1], self.spawn_coords[2], self.spawn_coords[3], fill="red", tags = "test")
            self.coords = canvas.coords(self.square)
    
        def spawn(self):
            if self.spawnpoint == "left":
                return [10,260,40,270]
            elif self.spawnpoint == "right":
                return [485,220,455,230]
            elif self.spawnpoint == "top":
                return [220,10,230,40]
            elif self.spawnpoint == "buttom":
                return [260,485,270,455]
            else:
                print ("invalid spawn Point")
                exit()
    
        def move(self):
            if self.spawnpoint == "left":
                self.xd = 5
                self.yd = 0 
            if self.coords[2] + self.xd >= 500:
                    print ("Left reached")
                    return False
            elif self.spawnpoint == "right":
                self.xd = -5
                self.yd = 0
                if self.coords[0] + self.xd <= 0:
                    print ("Right reached")
                    return False
            elif self.spawnpoint == "top":
                self.xd = 0
                self.yd = 5
                if self.coords[3] + self.xd >= 500:
                    print ("top reached")
                    return False
            elif self.spawnpoint == "buttom":
                self.xd = 0
                self.yd = -5
                if self.coords[1] + self.xd <= 0:
                    print ("buttom reached")
                    return False
            else:
                print ("invalid spawn Point")
                root.after_forget(self.move)
            canvas.move(self.square, self.xd, self.yd)
            self.coords = canvas.coords(self.square)
            root.after(100, self.move)
    
    
    l1 = TrafficLight(170, 140, 200, 205)
    l2 = TrafficLight(300, 140, 330, 205)
    l3 = TrafficLight(170, 295, 200, 360)
    l4 = TrafficLight(300, 295, 330, 360)
    
    s1= Street(0, 208, "v")
    s2= Street(208, 0, "h")
    
    c1= Car()
    c2= Car()
    c3= Car()
    c4= Car()
    
    
    def move_cars():
        for car in [c1, c2, c3, c4]:
            car.move()
    
    move_cars()
    
    root.mainloop()