配置Eclipse在完成时发出哔声(Python,Linux)

3 投票
2 回答
829 浏览
提问于 2025-04-16 09:20

我把我的应用程序设置成完成时会发出哔哔声(这样我在长时间运行的时候可以同时做其他事情)。在Windows上,这个设置很简单:

def beep_please():
    """Beep on Windows"""
    if os.name == 'nt':
        import winsound #@UnresolvedImport
        winsound.MessageBeep(winsound.MB_ICONEXCLAMATION)

import atexit
atexit.register(beep_please)

但问题是我最近换到了Linux,简单的哔哔声不再有效。打印 '\a' 也没有反应。谁能帮帮我?

2 个回答

0

试试用 sys.stdout.write('\007') 代替 print '\a'

0

根本原因是大多数现代Linux系统默认关闭了那个烦人的“哔”声。
可能的解决办法是使用pygame,或者直接使用已经安装的“播放器”。

使用Pygame的代码看起来是这样的:

import pygame

pygame.init()
pygame.mixer.music.load("my_sound_file.ogg")
pygame.mixer.music.play()
pygame.event.wait()

但是我不想为了一个不需要在运行时使用的工具而增加新的外部依赖,所以我最后做的是:

import os
os.system("/usr/bin/canberra-gtk-play --id='system-ready'")

在Ubuntu主题中还有很多其他的声音文件:

ls /usr/share/sounds/ubuntu/stereo

撰写回答