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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java怎么用_如何使用Java编写程序

    java怎么用_如何使用Java编写程序步骤1:您需要什么:1)一台运行Windows的PC(任何Windows软件将起作用:XP以外的其他软件可能需要稍作修改。请参见下面的链接。)2)Internet连接3)管理能力为了开始编程,我们首先需要下载Java开发套件(JDK)和Java软件。您的计算机可能已经具有JavaRuntimeEnvironment。这通常被称为JRE,或简称Java。这使您可以运行Java程序,但不能对它们进行编…

    2022年7月8日
    22
  • java md5加密源码_javaMD5加密源码

    java md5加密源码_javaMD5加密源码packageutil;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;publicclassMD5Tool{/***该方法将指定的字符串用MD5算法加密后返回。*@params*@return*/publicstaticStringgetMD5Encoding(…

    2022年7月14日
    18
  • 使用java代码打印三角形、平行四边形、菱形

    使用java代码打印三角形、平行四边形、菱形

    2021年5月24日
    163
  • 利用#ZipLib,完成C#下的解压缩「建议收藏」

    利用#ZipLib,完成C#下的解压缩「建议收藏」 ICSharpCode.SharpZipLib.dll是一个压缩的类库,似乎不是微软提供的1.BZip2    加入ICSharpCode.SharpZipLib.dll的引用,在#Develop的安装目录下的/SharpDevelop/bin目录下。然后在程序中使用using语句把BZip2类库包含进来。压缩:使用BZip2的静态方法Compress。    它的第一个参数是所要压缩

    2022年7月26日
    5
  • 2013年蓝桥杯真题[通俗易懂]

      1.某人年龄的立方是4位数,年龄的四次方是6位数,这10位数包含0到9,每个恰好出现一次,求他年龄多大publicclassOne{publicstaticvoidmain(String[]args){for(inti=10;i<100;i++){inti1=i*i*i;int…

    2022年4月12日
    44
  • Windows留后门–教程(五)——shift粘贴键后门

    Windows留后门–教程(五)——shift粘贴键后门一、shift粘贴键后门介绍Shift粘滞键是当用户连按5次shift就会自动弹出的一个程序,其实不光是粘滞键,还有各种辅助功能,这类辅助功能都拥有一个特点就是当用户未进行登录时也可以触发。所以攻击者很有可能通过篡改这些辅助功能的指向程序来达到权限维持的目的。(辅助功能镜像劫持是一样的原理)二、shift粘贴键后门-教程前提条件:假设在攻击的过程中通过利用各种getshell,已经拿到目标服务器administrator权限靶机:windowsServer2012IP:192.168.2

    2022年9月2日
    5

发表回复

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

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