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

python tkinter库 密码实时显示_python tkinter库实现气泡屏保和锁屏本文实例为大家分享了pythontkinter库实现气泡屏保和锁屏的具体代码,供大家参考,具体内容如下显示效果如下:代码:importrandomimporttkinterimportthreadingfromctypesimport*classRandomBall(object):”””定义关于球的类”””def__init__(self,canvas,screen_wid…

大家好,又见面了,我是你们的朋友全栈君。

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

显示效果如下:

python tkinter库 密码实时显示_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()

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162763.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2018.11.29 区块链论文翻译「建议收藏」

    2018.11.29 区块链论文翻译「建议收藏」2018.11.29 区块链论文翻译

    2022年4月21日
  • 论JSP数据库连接池的必要性

    论JSP数据库连接池的必要性

    2021年7月26日
  • C# bindingnavigatro删除事件修改&&遍历指定容器的控件

    C# bindingnavigatro删除事件修改&&遍历指定容器的控件bindingnavigatro自带的事件,不能修改,如果想在删除前加入提醒,需要做以下改变:1、在bindingnavigatro图标上点右键,选 编辑项2、删除系统默认带的Dele

    2022年6月30日
  • IOS 微信获取accesstoken 40029

    IOS 微信获取accesstoken 40029微信授权根据code获取accesstoken时报40029不合法的code在浏览器中是可以获取到token的 因为在客户端@”https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code”请求时重定向了,第二次的时候code参数差了导致

    2022年5月11日
  • 《斯坦福算法博弈论二十讲》学习笔记(持续更新)

    《斯坦福算法博弈论二十讲》学习笔记(持续更新)《斯坦福算法博弈论二十讲》学习笔记(持续更新)第一章简介和实例第二章机制设计基础第三章迈尔森引理第四章算法机制设计第一章简介和实例羽毛球比赛中的规则漏洞12年伦敦奥运会的羽毛球赛事中发生了一件钻规则漏洞的“丑闻”。赛制规则如下:共分为两个小组,每个小组四只队伍,小组赛阶段各个小组的前两名晋级,A组第1名对阵B组第2名,A组第2名对阵B组第1名,之后进行两两淘汰赛。TZ是本届赛事公认的强队,已经提前小组赛出线。WY与JK进行一场小组赛,二者之间的胜者将会对阵TZ,因此两只队伍都不想赢,都在

    2022年10月15日
  • ps如何激活成功教程安装免费_PS安装教程

    ps如何激活成功教程安装免费_PS安装教程原文:https://blog.csdn.net/lzp2015/article/details/830257611.下载安装包与注册机window下安装包https://pan.baidu.com/s/1VtAdWGJe5gRJiMGRuqoluw2.解压安装注意:如果之前安装过,请确保卸载成功以下是window64位安装教程①双击scrt_sfx732-x64….

    2022年10月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号