import tkinter as tk
class CarAnimation:
def __init__(self, master):
self.master = master
self.master.title("智能救援 - 多车道小车行驶动画,优先级越高,速度越快,走左侧快车道")
# 设置窗口尺寸
self.master.geometry("1450x900")
# 创建Canvas
self.canvas = tk.Canvas(self.master, width=1400, height=800, bg='white')
self.canvas.pack()
# 加载小车图像
self.car_image1 = tk.PhotoImage(file=r"G:\old_desktop\个人\car1.png")
self.car_image2 = tk.PhotoImage(file=r"G:\old_desktop\个人\car2.png")
self.car_image3 = tk.PhotoImage(file=r"G:\old_desktop\个人\car3.png")
# 初始化车辆数据
self.cars = [
{'x': 50, 'y': 100, 'speed': 1, 'priority': 1},
{'x': 50, 'y': 200, 'speed': 1, 'priority': 1},
{'x': 50, 'y': 300, 'speed': 1, 'priority': 1}
]
self.cars_graphics = []
# 创建小车图形
self.cars_graphics.append(self.canvas.create_image(50, 100, image=self.car_image1, anchor=tk.NW))
self.cars_graphics.append(self.canvas.create_image(50, 200, image=self.car_image2, anchor=tk.NW))
self.cars_graphics.append(self.canvas.create_image(50, 300, image=self.car_image3, anchor=tk.NW))
# 创建按钮
self.priority_buttons = []
for i in range(3):
button = tk.Button(self.master, text=f"提高第{i+1}辆车优先级", command=lambda i=i: self.change_priority(i))
button.pack(side=tk.LEFT, padx=10)
self.priority_buttons.append(button)
# 开始动画
self.animate()
def animate(self):
# 更新所有车辆的位置
for i, car in enumerate(self.cars):
car['x'] += car['speed'] *(1+ car['priority']/20 )
self.canvas.coords(self.cars_graphics[i], car['x'], car['y'])
# 检查边界
if car['x'] >=1200:
car['x'] = 1200
car['speed'] = 0
# 每隔10毫秒更新一次
self.master.after(10, self.animate)
def change_priority(self, car_index):
# 提高指定车辆的优先级
current_priority = self.cars[car_index]['priority']
new_priority = current_priority +1
self.cars[car_index]['priority'] = new_priority
# 按照优先级排序车辆
sorted_cars = sorted(self.cars, key=lambda x: x['priority'])
y_positions = [300, 200, 100]
for i, car in enumerate(sorted_cars):
car['y'] = y_positions[i]
self.canvas.coords(self.cars_graphics[self.cars.index(car)], car['x'], car['y'])
if __name__ == "__main__":
root = tk.Tk()
app = CarAnimation(root)
root.mainloop()
2024-07-31 紧急救援小车
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 最近这两年,我国的电影市场,真的是一片火爆。首先,票房记录连续被打破,商业上的成功,更是刺激了电影市场更快的发展。...
- 前言 Google Play应用市场对于应用的targetSdkVersion有了更为严格的要求。从 2018 年...