基于Python实现同时弹窗和声音报警,用户点击知道后,报警停止,用户不点击知道,报警不停止
时间: 2024-03-12 10:44:29 浏览: 93
python实现的弹窗提醒功能
5星 · 资源好评率100%
可以使用Python的`tkinter`库和`winsound`库实现同时弹窗和声音报警,并结合`after`方法实现报警不停止的功能。以下是一个示例代码:
```python
import tkinter as tk
import winsound
class Alarm:
def __init__(self):
self.top = None
self.sound_playing = False
def popup(self):
# 播放声音
if not self.sound_playing:
self.sound_playing = True
winsound.PlaySound("SystemExit", winsound.SND_ALIAS | winsound.SND_ASYNC | winsound.SND_LOOP)
# 创建弹窗
self.top = tk.Toplevel()
self.top.title("报警")
self.top.geometry("200x100")
tk.Label(self.top, text="警报!警报!").pack(pady=20)
# 创建知道按钮
know_button = tk.Button(self.top, text="我知道了", command=self.stop_alarm)
know_button.pack(pady=10)
def stop_alarm(self):
# 停止声音
winsound.PlaySound(None, winsound.SND_ALIAS)
# 销毁弹窗
self.top.destroy()
# 创建主窗口
root = tk.Tk()
root.geometry("200x200")
# 创建报警对象
alarm = Alarm()
# 创建报警按钮
button = tk.Button(root, text="点击报警", command=alarm.popup)
button.pack(pady=50)
root.after(10000, alarm.popup) # 10秒后自动触发报警
# 运行主循环
root.mainloop()
```
在这个代码中,我们定义了一个名为`Alarm`的类,其中包含`popup`方法和`stop_alarm`方法。当点击按钮时,会调用`popup`方法来弹出一个带有声音报警的弹窗,并开始循环播放报警声音。如果用户点击弹窗上的“我知道了”按钮,会调用`stop_alarm`方法来停止报警声音和销毁弹窗。如果用户不点击弹窗上的按钮,报警声音会一直播放。
为了实现报警不停止的功能,我们在主窗口上使用`after`方法,设置一个定时器,在一定时间后自动调用`popup`方法来触发报警。
运行这个代码,点击按钮即可弹出带有声音报警的弹窗,点击“我知道了”按钮即可停止报警。如果不点击弹窗上的按钮,报警声音会一直播放。10秒后,自动触发报警。
阅读全文