【发布时间】:2020-11-13 20:55:26
【问题描述】:
这是完整的代码。我是一个初学者,很多代码来自网上。任何事情都会有很大帮助。
关闭屏幕会杀死 tkinter,从而杀死我的 Python 闹钟。如何解决?
下面的大部分文字都是垃圾,所以你不必阅读它: 它由 3 部分组成:时钟 GUI 显示、按钮和闹钟设置以及关闭/打开监视器功能。设计目标是学习 python 并制作一个唤醒日出的东西,用你的显示器或投影仪模拟日出。因此,当闹钟响起时,投影仪会打开,并显示一个全屏时钟,背景颜色越来越亮。希望让那些需要在黑暗中醒来的人更容易醒来。我确信有更好的实现方式(我用 Chromebook 和 Arduino 控制 IR 来打开投影仪,过去用 Arduino 继电器独立构建了一个),但它仍然是为了学习。
from tkinter import font as tkfont
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
import time
import datetime
import os
import ctypes
def ScreenOff():
return ctypes.windll.user32.SendMessageW(65535, 274, 61808, 2)
def ScreenOn():
return ctypes.windll.user32.SendMessageW(65535, 274, 61808, -1)
root = Tk()
root.geometry("640x480")
root.frame = Frame(root)
root.frame.pack(fill = "both")
label = Label(root, text= "Welcome", bg = "black", fg = "white", font=("Times", 50))
label.pack(side= "top", fill = "both", expand = 1)
root.title_font = tkfont.Font(family = "Times", size = 100, weight = "bold", slant = "italic")
root.title("Clock")
def tick():
global wake
current_time = time.strftime("%I:%M:%S")
label.config(text=current_time)
label.after(200, tick)
# alarm start
def SubmitButton():
AlarmTime= entry1.get()
Message1()
#label2.config(text ="The Alarm will Ring at {} ".format(AlarmTime)) #delayed in execution
CurrentTime = time.strftime("%H:%M")
print("the alarm time is: {}".format(AlarmTime))
#label2.config(text="")
while AlarmTime != CurrentTime:
#label2.config(text ="The Alarm will Ring at {} ".format(AlarmTime))
CurrentTime = time.strftime("%H:%M")
time.sleep(1)
ScreenOff()
if AlarmTime == CurrentTime:
ScreenOn()
print("now Alarm Musing Playing")
os.system("start alarm-music.mp3")
label2.config(text = "Alarm music playing.....")
messagebox.showinfo(title= 'Alarm Message', message= "{}".format(entry2.get()))
def Message1():
AlarmTimeLable= entry1.get()
label2.config(text="the Alarm time is Counting...")
#label2.config(text= "the Alarm will ring at {}".format(AlarmTimeLable))
messagebox.showinfo(title = 'Alarm clock', message = 'Alarm will Ring at {}'.format(AlarmTimeLable))
frame1 = ttk.Frame(root)
frame1.pack()
frame1.config(height = 100, width = 100)
label1= ttk.Label(frame1,text = "Enter the Alarm time :")
label1.pack()
entry1 = ttk.Entry(frame1, width = 30)
entry1.pack()
entry1.insert(3,"example - 13:15")
labelAlarmMessage= ttk.Label(frame1, text="Alarm Message:")
labelAlarmMessage.pack()
entry2= ttk.Entry(frame1, width=30)
entry2.pack()
button1= ttk.Button(frame1, text= "submit", command=SubmitButton)
button1.pack()
#this Label2 will show the Last Alarm Time
label2= ttk.Label(frame1)
label2.pack()
#label2.config(text="hello")
tick()
root.mainloop()
例如,我可以重新启动 Tkinter 吗?还是让它不崩溃?还是让它崩溃但我的闹钟仍在后台工作?
非常感谢!
【问题讨论】:
-
“下面的大部分文字都是垃圾,所以你不必阅读它” - 如果是垃圾,请不要发布。
-
@BryanOakley MAYB 他这样做了,否则他们会说你的帖子主要是代码错误?不确定,只是说
-
@CoolCloud:这不是正当理由。这些规则的存在是有原因的,不应被垃圾代码或垃圾文本规避。
标签: python user-interface tkinter helper