Python 实现小车移动动画:从左上角到右下角,支持托盘化操作
以下代码使用 Python 编写的,实现了一个小车在窗口内从左上角移动到右下角的动画效果,同时支持将程序最小化到系统托盘,并提供恢复和退出功能:
import tkinter as tk
from PIL import ImageTk, Image
import threading
import sys
class CarGUI(tk.Tk):
def __init__(self):
super().__init__()
self.title('Car Moving')
self.geometry('500x500')
self.iconbitmap('car_icon.ico')
self.protocol('WM_DELETE_WINDOW', self.hide_to_tray)
self.canvas = tk.Canvas(self, width=500, height=500)
self.canvas.pack()
self.car_image = ImageTk.PhotoImage(Image.open('car.png').resize((50, 50)))
self.car_id = self.canvas.create_image(25, 25, image=self.car_image, anchor='nw')
self.speed = 2
self.direction = 'right'
self.move_car()
def move_car(self):
x1, y1, x2, y2 = self.canvas.bbox(self.car_id)
if self.direction == 'right':
if x2 < 500:
self.canvas.move(self.car_id, self.speed, 0)
self.after(10, self.move_car)
else:
self.direction = 'down'
self.move_car()
elif self.direction == 'down':
if y2 < 500:
self.canvas.move(self.car_id, 0, self.speed)
self.after(10, self.move_car)
else:
self.direction = 'stop'
def hide_to_tray(self):
self.withdraw()
def show():
self.deiconify()
self.tray_menu.destroy()
def exit_program():
self.destroy()
self.tray_menu = tk.Menu(self, tearoff=0)
self.tray_menu.add_command(label='恢复', command=show)
self.tray_menu.add_command(label='退出', command=exit_program)
self.tray_icon = tk.PhotoImage(file='tray_icon.png')
self.tray = tk.Toplevel()
self.tray.title('Tray')
self.tray.iconbitmap('tray_icon.ico')
self.tray.geometry('0x0')
self.tray.wm_attributes('-topmost', True)
self.tray.wm_attributes('-transparentcolor', 'white')
self.tray.iconphoto(False, self.tray_icon)
self.tray.bind('<Button-1>', show)
self.tray.bind('<Button-3>', lambda e: self.tray_menu.post(e.x_root, e.y_root))
self.tray.mainloop()
if __name__ == '__main__':
car_gui = CarGUI()
car_gui.mainloop()
运行这段代码需要准备以下文件:
car_icon.ico:程序的图标文件,可以使用任意 ico 文件,将其命名为car_icon.ico并与代码放在同一目录下。car.png:小车的图片文件,可以使用任意 png 文件,将其命名为car.png并与代码放在同一目录下。tray_icon.png:程序在托盘区的图标文件,可以使用任意 png 文件,将其命名为tray_icon.png并与代码放在同一目录下。
将上述代码保存为 car_gui.py,并在命令行中运行以下命令启动程序:
python car_gui.py
程序将在屏幕上显示一个窗口,其中有一辆小车从左上角开始沿着窗口向右下角匀速移动。可以通过右键点击托盘区的图标来恢复窗口显示,点击退出则程序退出内存,停止运行。
原文地址: https://www.cveoy.top/t/topic/bJma 著作权归作者所有。请勿转载和采集!