Python 实现小车动画:从左上角到右下角匀速移动并最小化到托盘区
以下是一个完成上述要求的 Python 代码:
import tkinter as tk
import sys
import os
# 创建窗口
window = tk.Tk()
window.geometry('500x500')
# 创建画布
canvas = tk.Canvas(window, width=500, height=500)
canvas.pack()
# 载入小车图片
car_image = tk.PhotoImage(file='car.png')
car = canvas.create_image(0, 0, anchor=tk.NW, image=car_image)
# 设置移动速度
speed = 5
# 定义移动函数
def move_car():
x, y = canvas.coords(car)
if x < 500 and y < 500:
canvas.move(car, speed, speed)
canvas.after(10, move_car)
# 开始移动
move_car()
# 点击关闭按钮时,程序最小化到任务栏托盘区
def minimize_to_tray():
window.iconify()
window.protocol('WM_DELETE_WINDOW', minimize_to_tray)
# 创建托盘菜单
def create_tray_menu():
menu = tk.Menu(window, tearoff=0)
menu.add_command(label='恢复', command=restore_from_tray)
menu.add_command(label='退出', command=exit_program)
return menu
# 托盘菜单点击恢复时,程序重新被切换到前台运行
def restore_from_tray():
window.deiconify()
# 托盘菜单点击退出时,程序退出内存,停止运行
def exit_program():
window.destroy()
sys.exit()
# 隐藏窗口并显示托盘菜单
def hide_window(event):
window.withdraw()
tray_icon = tk.PhotoImage(file='tray_icon.png')
window.iconphoto(True, tray_icon)
tray_menu = create_tray_menu()
tray = tk.Tk()
tray.overrideredirect(True)
tray.geometry('0x0')
tray.iconphoto(True, tray_icon)
tray.bind('<Button-1>', show_window)
tray.bind('<Button-3>', show_tray_menu)
tray.mainloop()
# 显示窗口
def show_window(event):
window.deiconify()
# 显示托盘菜单
def show_tray_menu(event):
tray_menu = create_tray_menu()
tray_menu.post(event.x_root, event.y_root)
# 绑定关闭按钮事件
window.protocol('WM_DELETE_WINDOW', hide_window)
# 运行程序
window.mainloop()
请将上述代码保存为一个 Python 文件,然后将小车图片和托盘图标保存在同一目录下,分别命名为'car.png'和'tray_icon.png'。然后运行该 Python 文件,即可看到小车在屏幕的指定窗口区域从左上角到右下角匀速移动。点击关闭按钮后,程序将最小化到任务栏托盘区。右键点击托盘区程序对应图标,可以弹出菜单,点击“恢复”可以重新将程序切换到前台运行,点击“退出”可以退出程序。
原文地址: https://www.cveoy.top/t/topic/bJmV 著作权归作者所有。请勿转载和采集!