以下是一个实现小车动画的 Python 代码,小车从窗口左上角匀速移动到右下角,支持速度调节,并可隐藏到托盘区:

import tkinter as tk
import os
import sys
import time
import threading
import ctypes
from PIL import Image, ImageTk
from tkinter import messagebox
from tkinter import Menu

class CarApp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.title('Car App')
        self.geometry('500x500')
        self.protocol('WM_DELETE_WINDOW', self.hide_to_tray)
        self.create_menu()
        
        self.speed = 1
        self.car_image = Image.open('car.png')
        self.car_image = self.car_image.resize((50, 50))
        self.car_photo = ImageTk.PhotoImage(self.car_image)
        self.car_label = tk.Label(self, image=self.car_photo)
        self.car_label.place(x=0, y=0)
        
        self.move_thread = threading.Thread(target=self.move_car)
        self.move_thread.start()
    
    def create_menu(self):
        self.menu_bar = Menu(self)
        self.file_menu = Menu(self.menu_bar, tearoff=0)
        self.file_menu.add_command(label='恢复', command=self.show_from_tray)
        self.file_menu.add_command(label='退出', command=self.quit)
        self.menu_bar.add_cascade(label='菜单', menu=self.file_menu)
        self.config(menu=self.menu_bar)
        
    def move_car(self):
        x = 0
        y = 0
        while x < self.winfo_screenwidth() and y < self.winfo_screenheight():
            x += self.speed
            y += self.speed
            self.car_label.place(x=x, y=y)
            time.sleep(0.01)
    
    def hide_to_tray(self):
        self.withdraw()
        self.tray_icon = tk.Tk()
        self.tray_icon.iconbitmap('car.ico')
        self.tray_icon.protocol('WM_DELETE_WINDOW', self.quit)
        self.tray_icon.mainloop()
    
    def show_from_tray(self):
        self.tray_icon.destroy()
        self.deiconify()

if __name__ == '__main__':
    app = CarApp()
    app.mainloop()

注意:

  • 代码所在路径下需要存在名为 'car.png' 的小车图片文件和名为 'car.ico' 的程序图标文件。
  • 运行代码后,将会在屏幕上显示一个小车,小车会从左上角匀速移动到右下角。
  • 通过菜单可以将程序隐藏到托盘区,右键点击托盘区图标可以选择恢复和退出程序。

原文地址: https://www.cveoy.top/t/topic/bJ8t 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录