程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如果该脚本仍在等待最后一个计时器的响应,我如何让该脚本不通知我?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如果该脚本仍在等待最后一个计时器的响应,我如何让该脚本不通知我??

开发过程中遇到如果该脚本仍在等待最后一个计时器的响应,我如何让该脚本不通知我?的问题如何解决?下面主要结合日常开发的经验,给出你关于如果该脚本仍在等待最后一个计时器的响应,我如何让该脚本不通知我?的解决方法建议,希望对你解决如果该脚本仍在等待最后一个计时器的响应,我如何让该脚本不通知我?有所启发或帮助;

所以我有这个脚本来检查我的无线鼠标和键盘电池,并在电池电量低于 35% 时通知我。

我将它设置为每 30 分钟运行一次的守护进程。

但是,如果我离开我的电脑一段时间并且它低于阈值,当我回来时我会看到多个弹出框,每次运行脚本时一个(我离开时每 30 分钟一个) .

我想这是守护进程中通知窗口的一个相当标准的问题,这里推荐的解决方案是什么?

我已经尝试创建一个 .txt 文件来存储字符串“true”或“false”。当脚本在离开时运行时,它的目的是查看文件,如果它为 false,则不显示弹出窗口,并且在向线程提供响应时将 .txt 重置为 true。

这不起作用,我不知道为什么。我认为当一个新脚本启动时,它会从第一次运行中丢失内存,所以我无法运行 thread.join() 的其余部分,也许?。这种方式也很笨拙,我相信有更好的解决方案。谁能告诉我我应该尝试什么?

这是我的代码:

import os
import re
import time
import threading

limit = 35

def Box(body):
    global r
    r = os.system("osascript -e 'Tell application \"System Events\" to display dialog \"" + body + "\"'")

def wait(body):
    done = false
    while not done:
        thread = threading.Thread(target=Box(body))
        thread.start()
        thread.join()
        if r == 0:
                #OK
                done = True
        if r == 256:
                #Cancel
                time.sleep(600)
        
r = None

#Read the data
output = os.popen("ioreg -l |egrep 'BatteryPercent|Bluetooth Product name'").read()

s0 = re.findall('= [0-9]+',output)
s = re.findall('\d+',''.join(s0))

keyboardindex = output.find("Magic Keyboard")
mouseIndex = output.find("Magic Mouse")

#Calculate which reading is which
if keyboardindex < mouseIndex:
        keyboard = int(s[0])
        mouse = int(s[1])
else:
        mouse = int(s[0])
        keyboard = int(s[1])

#If test worked:
if mouse < limit or keyboard < limit:
    if mouse < limit and keyboard < limit:
        wait("Mouse has %s%% charge.\nKeyboard has %s%% charge." % (str(mousE),str(keyboard)))
    else:
        if mouse < limit:
            wait("Mouse has %s%% charge." % (str(mousE)))
        else:
            wait("Keyboard has %s%% charge." % (str(keyboard)))

time.sleep(20)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的如果该脚本仍在等待最后一个计时器的响应,我如何让该脚本不通知我?全部内容,希望文章能够帮你解决如果该脚本仍在等待最后一个计时器的响应,我如何让该脚本不通知我?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: