python tkinter实现屏保程序
作者:wjcaiyf 发布时间:2023-02-20 14:31:20
标签:python,tkinter,屏保
本文实例为大家分享了python tkinter实现屏保程序的具体代码,供大家参考,具体内容如下
该脚本摘录自:2014年辛星tkinter教程第二版
#!/usr/bin/env python
from Tkinter import *
from random import randint
class RandomBall(object):
def __init__(self, canvas, screenwidth, screenheight):
self.canvas = canvas
self.xpos = randint(10, int(screenwidth))
self.ypos = randint(10, int(screenheight))
self.xspeed = randint(6, 12)
self.yspeed = randint(6, 12)
self.screenwidth = screenwidth
self.screenheight = screenheight
self.radius = randint(40, 70)
color = lambda : randint(0, 255)
self.color = '#%02x%02x%02x' % (color(), color(), color())
def create_ball(self):
x1 = self.xpos - self.radius
y1 = self.ypos - self.radius
x2 = self.xpos + self.radius
y2 = self.ypos + self.radius
self.itm = self.canvas.create_oval(x1, y1, x2, y2, fill=self.color,
outline=self.color)
def move_ball(self):
self.xpos += self.xspeed
self.ypos += self.yspeed
if self.ypos >= self.screenheight - self.radius:
self.yspeed = -self.yspeed
if self.ypos <= self.radius:
self.yspeed = abs(self.yspeed)
if self.xpos >= self.screenwidth - self.radius or self.xpos <= self.radius:
self.xspeed = -self.xspeed
self.canvas.move(self.itm, self.xspeed, self.yspeed)
class ScreenSaver:
def __init__(self, num_balls):
self.balls = []
self.root = Tk()
w, h = self.root.winfo_screenwidth(), self.root.winfo_screenheight()
self.root.overrideredirect(1)
self.root.attributes('-alpha', 0.3)
self.root.bind('<Key>', self.myquit)
self.root.bind('<Motion>', self.myquit)
self.canvas = Canvas(self.root, width=w, height=h)
self.canvas.pack()
for i in range(num_balls):
ball = RandomBall(self.canvas, screenwidth=w, screenheight=h)
ball.create_ball()
self.balls.append(ball)
self.run_screen_saver()
self.root.mainloop()
def run_screen_saver(self):
for ball in self.balls:
ball.move_ball()
self.canvas.after(50, self.run_screen_saver)
def myquit(self, event):
self.root.destroy()
if __name__ == "__main__":
ScreenSaver(18)
来源:https://blog.csdn.net/wjciayf/article/details/50679746
0
投稿
猜你喜欢
- 如下所示,代码为:array也可直接使用上面代码。测试如下:来源:https://blog.csdn.net/u011624019/arti
- 一、 腐蚀与膨胀1.1 腐蚀操作import cv2import numpy as npimg = cv2.imread('Data
- by leecade :我聊下我的想法 从功能上看,能不能把JS分成3层结构1 语法设计,选择器,常用函数2 业务逻辑(比如封装好常用的TA
- 锁是指在某组资源中,两个或两个以上的线程在执行过程中,在争夺某一资源时而造成互相等待的现象,若无外力的作用下,它们都将无法推进下去,死时就可
- 本文实例讲述了Python迭代器与生成器基本用法。分享给大家供大家参考,具体如下:迭代器可以进行for循环的数据类型包括以下两种:1. 集合
- 我就废话不多说了,大家还是直接看代码吧~import torch.nn as nnimport torch.nn.functional as
- 这里的Counter是指collections中的Counter,通过Counter可以实现字典的创建以及字典key出现频次的统计。然而,使
- 前言大家在做数据抓取的时候,经常遇到由于网络问题导致的程序保存,先前只是记录了错误内容,并对错误内容进行后期处理。原先的流程:def cra
- 有一个需求就是需要对url进行进一步的划分得到详细的各个字段信息,下面是简单的实现:#!/usr/bin/python# -*- codin
- 面是我下载页面down.php 的php代码 现在我发现,用迅雷,谷歌浏览器直接打开,就能输出下载文件,一点不起防盗链作用。&nb
- 本文实例讲述了python使用htmllib分析网页内容的方法。分享给大家供大家参考。具体实现方法如下:import htmllib, ur
- Python简介及入门python为什么是python选择自己喜欢的语言,这往往不容易,更多的是根据需求话说,之前是java,大学用了三年+
- 这篇文章主要介绍了python几种常用功能实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 在利用Keras进行实验的时候,后端为Tensorflow,出现了以下问题:1. 服务器端激活Anaconda环境跑程序时,实验结果很差。环
- 1. 首先是环境的安装 (本人使用的是PyCharm,python3.6)pip3 install PyQt5 (没有指定版本的话,默认会安
- 使用Django意味着后台框架的几乎所有内容都会和Django产生互动,排除功能全部手撸的情况.Django 后台admin有大量的属性和方
- 设计方法曾经是个很尴尬的话题,因为经常看上去很美。专业人士们动手动脚折腾一大圈,出来的结果令人大跌眼镜。也有些设计师总喜欢把方法、概念吹的特
- requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到。可以说,Requests 完全满足如
- 一、scapy简介与安装scapy(http://www.secdev.org/projects/scapy/)是一个强大的交互式数据包处理
- 很久没有写文章,最近一直在忙于找工作和找房子。哎,现在终于安定下来了,哎,又叹息一下,是因为我把去淘宝面试的机会也推掉了,本来以为要卷铺盖回