Tkinter - 如何在事件发生时添加“铃声”?

Posted

技术标签:

【中文标题】Tkinter - 如何在事件发生时添加“铃声”?【英文标题】:Tkinter - How can I add a "bell sound" when an event accurs? 【发布时间】:2020-05-28 12:06:33 【问题描述】:

我有一个关于 Tkinter 铃声的简单问题。当我的进度条完成或使用filedialog.asksaveasfilename() 函数打开消息框窗口时,如何添加其中一个?

【问题讨论】:

这能回答你的问题吗? how-would-i-go-about-playing-an-alarm-sound-in-python 【参考方案1】:

您可以使用方法bell() 来触发系统铃声。

这是一个在进度条完成时如何播放的示例。

import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()

def work():
    if progressbar['value'] == 0:
        but1['state'] = 'disabled'
    if progressbar['value'] >= progressbar['maximum']:
        root.bell()
        but1['state'] = 'normal'
        progressbar['value'] = 0
        return
    progressbar['value'] += 1
    root.after(100, work)

progressbar = ttk.Progressbar(root, length=200, maximum=10, value=0)
progressbar.grid(row=1)

but1 = ttk.Button(root, text='Start', command=work)
but1.grid(row=2)

root.mainloop()

同样,借助这个例子,我希望你也能用消息弹窗来实现它。


Tkinterbell()是操作系统的默认声音,改变Tkinter应用程序中的铃声可以改变系统默认的提示音。例如,

on macOS, 可以通过选择 Apple 菜单 > 系统偏好设置,单击声音,然后单击声音效果来实现。

这里是how one can do it on Windows。 这里是how one can do it on Linux.

【讨论】:

乔萨德!你已经很清楚了,非常感谢你用一个例子来回答。您的代码有效,但我刚刚意识到,如果您通过 CLI 启动脚本,您将无法播放铃声。例如,在我的代码中,要播放铃声,我必须将脚本的扩展名从“.py”更改为“.pyw”(我的操作系统是 Windows 10 Enterprise x64”)。 现在我还有一个问题,如何选择不同种类的铃铛?默认铃声与我的范围不匹配 @TurboC:我通过带有和不带有.pyw 扩展名的命令行运行了代码,它可以正常工作**尽管我使用的是macOS **。 Tkinter 铃声响起默认的系统警报声音,如果您更改系统警报声音,它也会在 Tkinter 应用程序中发生变化。就像我在 Mac 上所说的那样,我可以确认更改系统默认声音确实会改变 Tkinter 应用程序中的哔声。 mm,我明白了,可能在 Windows 中 Tkinter 有不同的行为。但是,无论如何,这意味着如果我想改变“bell()”中发出的声音,Tkinter 会让我改变操作系统中的系统声音?难道没有更简单的方法来改变“铃声”吗?也许在不触及系统设置的情况下从“bell()”函数中选择一个不同的函数? ciao Saad,很抱歉迟到了,但我仍在测试我的代码。是的,你的回答很好,但最后,正如你建议我的那样,我选择使用 winsound。这更简单,因为我可以选择我想要的所有系统声音(Windows 中的所有声音都放在“C:\Windows\Media”中)。但是使用这个模块意味着受系统的依赖,但是..我会在完成它时解决这个问题。感谢您的支持;)

以上是关于Tkinter - 如何在事件发生时添加“铃声”?的主要内容,如果未能解决你的问题,请参考以下文章

Rxswift 在事件发生时取消观察者并重新订阅

如何将 Tkinter 按钮状态从禁用更改为正常?

单击事件发生时如何检索与视图关联的模型

我应该如何对 contenteditable div 进行双向绑定,以便我们可以在 onclick 事件发生时访问内容并进行更改?

在 DST 更改发生时将字符串解析为日期

js事件类型