如何解决使用 tkinter 和 schedule 模块制作“屏幕锁”
我一直想创建一个程序,从晚上 11 点到早上 6 点“锁定我的屏幕”(不要问为什么)。我最近发现了 schedule,它允许我在特定时间运行一个函数。我试图将它与 tkinter 集成,但发生了一些意想不到的事情。到目前为止,这是我的代码:
from tkinter import *
from tkinter import messagebox,simpledialog
import schedule
import time
root = Tk()
def block_start():
def provide_password_to_quit():
user_result = simpledialog.askstring('Password','What is the password?')
if user_result.lower() == 'password':
root.destroy()
global root
root.geometry('1920x1080')
root.overrideredirect(True) # makes root full-screen,which "locks" my monitor
quit_button = Button(root,text="Quit",command=provide_password_to_quit)
quit_button.pack()
root.mainloop()
def block_off():
global root
root.overrideredirect(False) # "unlocks" my monitor
schedule.every().day.at("23:00").do(block_start) # creates full-screened window at 11 PM
schedule.every().day.at("06:00").do(block_off) # destroys full-screened window at 6 AM
while True:
schedule.run_pending()
time.sleep(1)
当我运行它时,它会创建全屏窗口,但是当我尝试在 6:00 解锁我的显示器时,它什么也不做,一旦我关闭全屏,它然后 决定运行并提高 _tkinter.TclError
(因为我破坏了 root)。有没有办法解决这个问题?我尝试将它放在线程中,但 tkinter 不允许您运行不在主线程中的 GUI。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。