本文实例为大家分享了python tkinter库实现气泡屏保和锁屏的具体代码,供大家参考,具体内容如下

显示效果如下:

代码:

import random

import tkinter

import threading

from ctypes import *

class RandomBall(object):

"""

定义关于球的类

"""

def __init__(self, canvas, screen_width, screen_height):

"""初始化画布和屏幕尺寸"""

self.item = None

self.canvas = canvas

# 定义球的初始位置(x,y),此坐标为球的圆心,位置随机生成

self.x_pos = random.randint(10, int(screen_width) - 20)

self.y_pos = random.randint(10, int(screen_height) - 20)

# 定义球在x、y方向上的移动速度,速度随机给定

self.x_velocity = random.randint(6, 12)

self.y_velocity = random.randint(6, 12)

# 将屏幕尺寸的形参赋给函数内部

self.screen_width = screen_width

self.screen_height = screen_height

# 定义球的半径,半径大小随机给定

self.radius = random.randint(40, 70)

# 定义球的颜色

c = lambda: random.randint(0, 255)

self.color = '#%02x%02x%02x' % (c(), c(), c())

def create_ball(self):

""" 创建球的函数"""

# 通过圆心,获取一矩形左上角和右下角的坐标

x1 = self.x_pos - self.radius

y1 = self.y_pos - self.radius

x2 = self.x_pos + self.radius

y2 = self.y_pos + self.radius

# tkinter没有创建圆的函数,通过创建椭圆的方式来生成圆

self.item = self.canvas.create_oval(x1, y1, x2, y2, fill=self.color, outline=self.color)

def move_ball(self):

"""创建球移动的函数"""

# 球的(x,y)坐标根据速度变化不断更新

self.x_pos += self.x_velocity

self.y_pos += self.y_velocity

# 当球撞到屏幕边界后,反弹的算法判断

if self.x_pos + self.radius >= self.screen_width:

self.x_velocity = -self.x_velocity

if self.x_pos - self.radius <= 0:

self.x_velocity = -self.x_velocity

if self.y_pos + self.radius >= self.screen_height:

self.y_velocity = -self.y_velocity

if self.y_pos - self.radius <= 0:

self.y_velocity = -self.y_velocity

# 在画布上移动图画

self.canvas.move(self.item, self.x_velocity, self.y_velocity)

class ScreenSaver(object):

"""

定义屏保的类

"""

def __init__(self):

self.balls = []

# 每次启动程序,球的数量随机

self.num_balls = random.randint(20, 60)

# 生成root主窗口

self.root = tkinter.Tk()

# 获取屏幕尺寸,作为主窗口尺寸

self.width = self.root.winfo_screenwidth()

self.height = self.root.winfo_screenheight()

# 取消边框

self.root.overrideredirect(1)

# 调整背景透明度

self.root.attributes('-alpha', 1)

# 点击鼠标、移动鼠标、敲击键盘时退出程序

# self.root.bind('', self.my_quit)

# self.root.bind('', self.my_quit)

self.root.bind('', self.my_quit)

# 创建画布,包括画布的归属、尺寸和背景颜色

self.canvas = tkinter.Canvas(self.root, width=self.width, height=self.height, bg="black")

self.canvas.pack()

# 根据num_balls随机生成的数值,在画布上生成球

for i in range(self.num_balls):

# 调用RandomBall函数,自动初始化出不同大小、位置和颜色的球

ball = RandomBall(self.canvas, screen_width=self.width, screen_height=self.height)

# 调用生成球的函数

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()

# after函数是每200毫秒后启动一个函数,第二个参数为需启动的函数,类似于递归

self.canvas.after(50, self.run_screen_saver)

def my_quit(self, event):

"""定义一个停止运行的函数"""

self.root.destroy()

print(event)

class LockScreen(object):

"""定义锁屏的类"""

def __init__(self):

self.HWND_BROADCAST = 0xffff

self.WM_SYS_COMMAND = 0x0112

self.SC_MONITOR_POWER = 0xF170

self.MonitorPowerOff = 2

self.SW_SHOW = 5

def win_dll(self):

"""调用windll函数"""

windll.user32.PostMessageW(self.HWND_BROADCAST, self.WM_SYS_COMMAND,

self.SC_MONITOR_POWER, self.MonitorPowerOff)

shell32 = windll.LoadLibrary("shell32.dll")

shell32.ShellExecuteW(None, 'open', 'rundll32.exe',

'USER32,LockWorkStation', '', self.SW_SHOW)

if __name__ == '__main__':

ScreenSaver()

t = threading.Thread(target=LockScreen().win_dll())

t.start()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python tkinter库 密码实时显示_python tkinter库实现气泡屏保和锁屏相关推荐

  1. python tkinter库 密码实时显示_Python3 tkinter基础 Entry show textvariable 密码输入框

    Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda : 4.5.11 typesetting : Markdown ...

  2. python tkinter库实现气泡屏保和锁屏

    显示效果如下: 代码: import random import tkinter import threading from ctypes import *class RandomBall(objec ...

  3. python 提示框如何顶层显示_Python Tkinter Toplevel顶层窗口

    Toplevel小部件用于创建和显示由窗口管理器直接管理的顶层窗口.顶层窗口小部件可能有也可能没有父窗口. 当python应用程序需要在新窗口中表示一些额外信息,弹出窗口或小组件组时,将使用tople ...

  4. python 提示框如何顶层显示_python tkinter之顶层菜单、弹出菜单实例

    我就废话不多说了,直接看代码吧! from tkinter import * def sys_callbak(): pass def fun_callbak(): pass def no_thing( ...

  5. 锁屏密码忘记了?教你40秒破iphone锁屏密码!

    案例:iPhone锁屏密码忘记了怎么办? [求助,昨晚刚改的锁屏密码,今早起来想不起来了.苹果锁屏密码有什么方法可以破解吗?] 当你忘记了iPhone的锁屏密码,可能会感到困惑和无助.本文将介绍40秒 ...

  6. linux如何解除密码锁屏图案大全,手机锁屏图案(锁屏密码)忘记了怎么办?四种方法帮你轻松搞定...

    很多朋友可能为了追求新奇,对手机的各种功能都比较好奇,都想试一试.对于图案解锁这个功能也可能比较喜欢,但会不会就是刚刚设置完了就忘记了呢?那么手机锁屏图案(锁屏密码)忘记了怎么办?本文将为大家介绍四种 ...

  7. 联想台式电脑开机时不显示主板logo直接黑屏进入锁屏界面因此无法进入bios模式解决方法

    问题:公司让我熟悉一下linux系统指令 因此我就打算在公司的机子上装上虚拟机,但是使用VMware软件时,可能会出现一些小问题,导致虚拟机无法打开,就像下图这样:  解决1:在网上查了很久,都说先重 ...

  8. 仿QQ黑屏,锁屏,程序切换之后的手势密码锁定,加强版

    这是一篇我个人在EOE发的帖子<仿QQ黑屏,锁屏,程序切换之后的手势密码锁定,>,由于eoe的blog系统实在是无言以对,我就把eoe上面的帖子以及blog是都转到csdn上来,原帖地址: ...

  9. 仿QQ黑屏、锁屏、程序切换等手势密码

    仿QQ黑屏.锁屏.程序切换等手势密码 仿九宫格绘制手势锁屏,设置手势时,两次一样才成功,黑屏后即锁屏,需绘制手势解锁 下载地址:http://www.devstore.cn/code/info/105 ...

最新文章

  1. js笔记 - ajax中的get和post说明
  2. [CF960F]Pathwalks
  3. skype可以卸载吗_Skype、WhatsApp登录不上、经常掉线如何解决?史上最强攻略
  4. websocket 之入门 (一)
  5. jparepository查询所有_jparepository 怎样自定义查询
  6. 云计算的基础设施服务
  7. 【Elasticsearch】Fielddata is disabled on text field fielddata=true
  8. 硬盘整数分区最精确地方法(转载)
  9. 5.5.35 - mysql 同步_MySQL 5.6.35主从同步配置案例
  10. 怎么实现单击span时给span添加边框
  11. t470键盘拆解_看完你就想买——绝对良心级做工品质的ThinkPad T470拆解
  12. 海南自贸区电信行业环境分析
  13. 年终盘点 | 2020年最佳CV论文速览「AI核心算法」
  14. 管外磁水处理器的简单介绍
  15. BLE Mesh (8) —— Friendship
  16. 操作系统(期中考试时备考的题目)
  17. 身份证OCR识别发展史
  18. 原来开车和写博客是很相似的心理变化过程
  19. 区块链技术正向积极乐观的智能前景发展
  20. IO那些事01-IO总述和文件描述符

热门文章

  1. 真假金士顿U盘大拆解
  2. 国密浏览器如何完成SM2国密SSL协议协商
  3. 计算机考试新题,最新计算机考试题库及答案(全).doc
  4. 《Java从入门到放弃》框架入门篇:SpringBoot+mybatis使用注解方式实现mapper
  5. Codeforces Puzzles
  6. python为什么那么好看_为什么Python代码要写得美观而明确
  7. 为什么手机里的小爱音响app里搜不到家里的小爱音箱_小米随身版小爱蓝牙音箱【开箱体验】,49的小爱音箱,值了...
  8. JreBel热部署插件激活教程
  9. PHP爬虫最全总结-phpQuery,PHPcrawer,snoopy框架中文介绍
  10. 新Chrome浏览器不支持html5的问题