Python 小车动画:从左上角移动到右下角,可调节速度,支持托盘隐藏
以下是一个实现小车动画的 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 著作权归作者所有。请勿转载和采集!