用python在win7上实现win10的动态锁(GUI)篇

上一篇的GUI版本,使用PyQt5和PyInstaller

1.废话少说,直接上码

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import time
from bluetooth import *
from ctypes import *
import sys
import bluetooth
import base64
import sys


class lock(QMainWindow):
    file_changed_signal = pyqtSignal(str)  # 信号类型:str
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setWindowTitle('蓝牙动态锁')
        self.setWindowIcon(QIcon('bluelock.ico'))
        self.macedit = QLineEdit()
        self.macedit.setInputMask("HH:HH:HH:HH:HH:HH")              #设置掩码
        self.macedit.setPlaceholderText("请输入蓝牙MAC!")
        self.macedit.textChanged.connect(self.getText)
        self.file_list = QListWidget()
        self.btn = QPushButton('开启自动锁屏')
        layout = QGridLayout(self)
        widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)
        layout.addWidget(self.file_list, 0, 0, 1, 2)
        layout.addWidget(self.macedit,1,0,1 ,1)
        layout.addWidget(self.btn, 1,1)
        self.thread = Worker()
        self.thread.file_changed_signal.connect(self.update_file_list)
        self.file_changed_signal.connect(self.update_file_list)
        self.btn.clicked.connect(self.thread_start)
        self.macedit.setFocus()
        os.remove("bluelock.ico")               #删除图标
    def getText(self, text):
        global mac                      #全局mac变量,好处是当return不会用的时候有一个方式变通...
        mac=text

    def update_file_list(self, file_inf):
        self.file_list.addItem(file_inf)

    def thread_start(self):         #开启进程--目的是防止GUI界面假死
        if str((self.macedit.text()))==':::::':         #判断是否空输入
            self.file_changed_signal.emit('蓝牙MAC地址不能为空!')
            print('没有填写蓝牙mac地址')
        elif len(str((self.macedit.text())))!=17:    #判断长度是否为17位
            self.file_changed_signal.emit('没有填写正确蓝牙MAC格式!')
        else:
            self.btn.setEnabled(False)
            self.macedit.setEnabled(False)
            self.thread.start()


class Worker(QThread):              #进程
    file_changed_signal = pyqtSignal(str)  # 信号类型:str

    def __init__(self):
        super().__init__()
        self.working = True
    def __del__(self):
        self.working = False
        self.wait()

    def run(self):
        while True:
            self.findDevs()         #调用核心函数和10秒休眠
            time.sleep(10)
    def findDevs(self):
        target = mac
        notfoundmac = []
        err_conn = 0
        for x in range(10):         #锁屏条件--连续10次找不到
            services = bluetooth.find_service(address=target)
            if notfoundmac == services:
                if mac =='':
                    self.file_changed_signal.emit('没有填写蓝牙mac地址')
                    break
                err_conn = err_conn + 1
                print(err_conn)
                self.file_changed_signal.emit('未找到蓝牙地址,序号:%s' %err_conn)
                if err_conn == 10:
                    user32 = windll.LoadLibrary('user32.dll')       #锁屏
                    user32.LockWorkStation()
                    print('windows is locked!!!')
            else:
                print('keep alive...')
                self.file_changed_signal.emit('keep alive...')
                break

#base64转换为ico图标
img_b64_string=b'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///77OL/6YZE/+d3Lf/ndy3/53ct/+d3Lf/ndy3/53ct/+d3Lf/ogDv/5pBX0gABAQAAAAAAAAAAADVDPgTpklf053s0/+d3Lf/ndy3/53ct/+d3Lf/ndy3/53ct/+d3Lf/ndy3/6II+//rm2f//////////////////////++3j/+mHRv/ndy3/53ct/+d3Lf/ndy3/53ct/+d3Lf/ndy3/53ct/+d7NP/pklfyMT05BAAAAAAAAAAAoIRnCuuSV//neTH/53ct/+d3Lf/ndy3/53ct/+d3Lf/ndy3/53ct/+d3Lf/ndy3/6II+//rn2v////////////vu5P/ph0f/53ct/+d3Lf/ndy3/53ct/+d3Lf/ndy3/53ct/+d3Lf/ndy3/53kx/+uSV/+bgWUKAAAAAAAAAACrjW4K65JX/+d5Mf/ndy3/53ct/+d3Lf/ndy3/53ct/+d3Lf/ndy3/53ct/+d3Lf/nejH/99bA///////+/v7/+d/O/+h9Nv/ndy3/53ct/+d3Lf/ndy3/53ct/+d3Lf/ndy3/53ct/+d3Lf/neTH/65JX/6eLbQoAAAAAAAAAAGR7cgLqkljy53s0/+d3Lf/ndy3/53ct/+d3Lf/ndy3/53ct/+d3Lf/ndy3/53ox//fUvf//////////////////////+N3K/+d8Nf/ndy3/53ct/+d3Lf/ndy3/53ct/+d3Lf/ndy3/53ct/+d7NP/qkljyXHRtAgAAAAAAAAAAEBkYAOmSWNDogDv/53ct/+d3Lf/ndy3/53ct/+d3Lf/ndy3/53ct/+d5Mf/31L3///////307//99fD//vv6//vu5f//////+NzI/+d8Nf/ndy3/53ct/+d3Lf/ndy3/53ct/+d3Lf/ndy3/6IA7/+mSWNALDg4AAAAAAAAAAAAAAAAA6ZNZmOmGRf/ndy3/53ct/+d3Lf/ndy3/53ct/+d3Lf/neTH/99O8///////99fH/65FV//vq3//9+PX/6YhH//vu5f//////+NvH/+d8NP/ndy3/53ct/+d3Lf/ndy3/53ct/+d3Lf/phkX/6ZNZmAAAAAAAAAAAAAAAAAAAAADolVxM6o5S/+d3Lf/ndy3/53ct/+d3Lf/ndy3/53cu//fTu////////ffy/+uTWf/ndiz/++rf//349f/mdiz/649T//7+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'
print(img_b64_string)
convert_img_raw_data = base64.b64decode(img_b64_string)
t = open("bluelock.ico", "wb+")
t.write(convert_img_raw_data)
t.close()

app = QApplication(sys.argv)
dlg = lock()
dlg.show()
sys.exit(app.exec_())

2.界面

Image 1.png

3.代码虽然写的稀烂,但心是热的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容

  • windows10动态锁小功能,绑定手机蓝牙,当手机离开蓝牙搜索范围后自动锁屏,实现先跑路再删库。 1.环境 wi...
    舒阳的小号阅读 1,018评论 0 1
  • 创建第一个GUI界面 首先,我们使用pyqt5的窗口小部件创建一个最基本的GUI: 在上面的程序中,我们首先引用了...
    JackHCC阅读 3,072评论 0 7
  • 致谢声明 1.本文学习nanhuier的博客《Python计算谷歌身份验证器的验证码》并优化其中代码。原博客链接:...
    潇洒坤阅读 2,446评论 2 1
  • 很敏感 特别是在友谊面前 只要感觉到对方有点点不一样的反应 我会马上有所警惕 之后就不会再对她们以从前的心对待 多...
    小确肥123阅读 100评论 0 0
  • 成长教会了我们很多的东西,而要在这众多的习惯里面选两个,那么我选读书和自省,因为有了他们基本什么都有了。 看书能够...
    爱流浪的喵阅读 286评论 0 1