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)
上一篇 2022年7月21日 上午9:00
下一篇 2022年7月21日 上午9:00


相关推荐

  • leetcode 回溯算法_java生成带括号的算术题

    leetcode 回溯算法_java生成带括号的算术题原题链接数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:[“((()))”,”(()())”,”(())()”,”()(())”,”()()()”]示例 2:输入:n = 1输出:[“()”] 提示:1 <= n <= 8题解回溯class Solution {public: vector<string>res; string t = “”; voi

    2022年8月8日
    11
  • opencv 滤波 方框滤波 均值滤波 高斯滤波 中值滤波 双边滤波[通俗易懂]

    文章目录一.线性滤波1.1.方框滤波demo1.2.均值滤波demo1.3.高斯滤波demo二.非线性滤波2.1.中值滤波demo2.2.双边滤波demo结构体参考一.线性滤波1.1.方框滤波方框滤波是所有滤波器中最简单的一种滤波方式。每一个输出像素的是内核邻域像素值的平均值得到。通用的滤波kernel如下:这里是一个长宽分别为Kwidth和Kheight的窗口函数,在此区域内邻域中像素值叠加求平均即可求出位于kernel中心点像素的像素值。/**@brief使用框过滤

    2022年4月9日
    35
  • oracle打补丁opatch_centos安装oracle11g方法

    oracle打补丁opatch_centos安装oracle11g方法timescaleDB在2.0版本发布了多节点版本,相对于单节点带来的更多是效率上的提升,本文详细介绍了如何在PG12版本下安装timescaleDB的多节点模式

    2022年10月8日
    6
  • pycharm专业版 没有试用30天按钮,需要登录的解决方案「建议收藏」

    pycharm专业版 没有试用30天按钮,需要登录的解决方案「建议收藏」pychram在2021年9月30日之后的版本,需要用户登录后才能开启试用;以此来抵制盗版(虽然没有什么用…)新版本是长这样:没有了之前的Evaluateforfree选项;进入的解决方案:注册一个JetBrains帐户;注册地址:https://account.jetbrains.com/login?_ga=2.268514929.1239888694.1637728385-1574465557.1637728385填写邮箱地址后,在邮箱中进行下一步操作;邮箱发送可能有

    2025年6月23日
    5
  • SQLyog 使用教程

    SQLyog 使用教程mysql 数据库操作 创建数据库 createdataba 创建表 createtablet user idintprimary increment usernamevarc 50 notnull passward varchar 20 remarkvarcha 50 gendarvarcha 20 删除表 droptabletes 插入表

    2026年3月19日
    1
  • 群晖aria2外网无法访问(群晖设置aria2)

    NAS群晖DSM5.2小白教程:一行命令用Docker架设aria2服务首发2016-05-1712:15:2225点赞285收藏57评论小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无上限,点击查看活动详情群晖DSM5.2起新增支持Docker让开发者与用户能以最少的时间与资源,能够在Synology服务器上部署和运行大量应用程序。Docker容器和普通的虚…

    2022年4月14日
    804

发表回复

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

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