py编程。生产一个1300*800的黑色窗口,像深夜天空那种黑。当鼠标在窗口划过的时候,鼠标经过的位置有星星闪烁一下的效果,闪烁之后就慢慢暗下里。当划过的星星够一定的量时候,各个闪烁的星星飞到窗口中心,并围成一个圆圈。
时间: 2024-10-19 22:08:26 浏览: 22
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
在Python中,我们可以使用Tkinter库创建图形用户界面(GUI),并结合一些动画效果来实现这个场景。首先,我们需要导入必要的库,然后定义窗口、颜色处理以及事件响应函数。
```python
import tkinter as tk
from PIL import Image, ImageDraw
# 创建主窗口
root = tk.Tk()
root.geometry("1300x800")
root.configure(bg="#000000") # 设置背景色为深黑色
# 初始化图像和绘图工具
img = Image.new('RGB', (1300, 800), color='black')
draw = ImageDraw.Draw(img)
# 星星闪烁位置列表
star_positions = []
def on_move(event):
x, y = event.x, event.y
draw.point((x, y), fill=(255, 255, 255)) # 点亮星星位置
star_positions.append((x, y))
if len(star_positions) >= 10: # 当有足够的星星
stars_to_center(root, star_positions)
star_positions.clear() # 清空已点亮的星星
def stars_to_center(window, positions):
center_x, center_y = window.winfo_width() // 2, window.winfo_height() // 2
for pos in positions:
x, y = pos
angle = ((x - center_y)**2)**0.5 / max(window.winfo_width(), window.winfo_height()) * 2 * 3.14159
dx = int(center_x + 100 * cos(angle))
dy = int(center_y + 100 * sin(angle))
window.create_oval(dx, dy, dx+20, dy+20, fill="white", tags="circle")
# 监听鼠标移动事件
root.bind("<B1-Motion>", on_move)
# 开始主循环
root.mainloop()
```
在这个示例中,我们创建了一个1300x800的黑色窗口,并在`on_move`函数中处理鼠标移动事件。每次鼠标移动时,我们会点亮当前鼠标位置,同时将坐标保存到`star_positions`中。当达到一定数量时,我们将所有星星围绕中心点旋转并绘制成圆形。
注意,这里的`cos`和`sin`函数需要你自己引入或自定义,因为Tkinter库本身并不包含它们。你可以使用math库或其他方法来实现三角函数计算。
阅读全文