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首次接触无锁数据结构的设计,请各位大佬多多指教~~~CAS(Compare&&Swap)原子操作CAS是无锁(lockfree)的数据结构的基础。用伪代码描述:input:reg,old_val,new_val/*是old_val,reg替换为new_val,返回为true;否则返回为false*/if(*reg==old_val){*reg==new…

    2025年8月25日
    4
  • 数据结构与算法——从零开始学习(一)基础概念篇「建议收藏」

    前言数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合用计算机存储、组织数据的方式。数据结构分别为逻辑结构、(存储)物理结构和数据的运算三个部分。为什么要学数据结构?首先,因为数据结构作为计算机专业的专业基础课程,是计算机考研的必考科目之一,如果打算报考计算机专业的研究生,你必须学好它;其次,数据结构是计算机软考、计算机等级考试等相关考试的必考内容之一,想要顺利通过这些考…

    2022年4月11日
    44
  • mac vscode 格式化代码快捷键(vscode怎么设置快捷键)

    control+G快速找到某一行command+shift+k删除整行代码command+fn+delete删除当前行光标后的所有代码command+delete删除当前行光标前的所有代码option+fn+delete删除当前单词光标后到符号之间的代码option+delete删除当前单词光标前到符号之间的代码…

    2022年4月15日
    326
  • 如何实现股票自动化交易,甚至自动打板?

    如何实现股票自动化交易,甚至自动打板?闲聊曾经比较喜欢玩手机游戏 在某个手游板砖了无数个日月后 突然一天牛顿的宁夏哈密瓜砸爆了我的头 我为什么要手动玩游戏 一个开发者应该有开发者玩游戏的尊严 自动化 因此我完成了一个脚本来玩游戏来解放双手 在一个小圈子我突然冒出来 我是程序员 然后大家都惊呆了 原来经常讨论的程序猿就在身边 同时我共享了自己的脚本 得到了大家的认可 大佬 收下我的膝盖 程序猿无所不能 不禁有了一丝作

    2025年12月7日
    2
  • linux快捷键大全_电脑常用的快捷键大全

    linux快捷键大全_电脑常用的快捷键大全Linux常用快捷键,基础菜鸟推荐~

    2022年4月20日
    47
  • pycharm2021专业版永久激活码【在线注册码/序列号/破解码】

    pycharm2021专业版永久激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    82

发表回复

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

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