【问题标题】:Playing sound on right or left Speaker on MouseOver [duplicate]在鼠标悬停的右侧或左侧扬声器上播放声音[重复]
【发布时间】:2021-02-01 16:23:33
【问题描述】:

我正在尝试使用 PyQt5 在 python 中制作小程序。 该程序将有两个按钮,中间有一个标签。当鼠标移过标签时,我想调用一个 def,以更改按钮的颜色并从特定扬声器(左或右)播放声音

我尝试了 pygame,关注了一些帖子,但没有。声音在两个声道中播放。

import time
import pygame

pygame.mixer.init(44100, -16,2,2048)
channel1 = pygame.mixer.Channel(0) # argument must be int
channel2 = pygame.mixer.Channel(1)
print('OkkK')

soundObj = pygame.mixer.Sound('Aloe Blacc - Wake Me Up.wav')
channel2.play(soundObj)
soundObj.set_volume(0.2)

time.sleep(6) # wait and let the sound play for 6 second
soundObj.stop()

有没有办法解决这个问题并选择左右扬声器?

另外,有没有办法在鼠标悬停标签时调用 def?

【问题讨论】:

标签: python pygame onmouseover


【解决方案1】:

当您通常使用pygame 时,更喜欢调用pygame.init() 来初始化所有pygame 模块,而不是单独键入pygame. module .init()。它将节省您的时间和代码行数。


然后,要播放pygame中的声音文件,我一般使用pygame.mixer.Sound获取文件,然后调用声音对象的play()函数。

所以下面导入一个声音文件,然后根据鼠标X位置播放平移

import pygame
from pygame.locals import *

pygame.init() # init all the modules

sound = pygame.sound.Sound('Aloe Blacc - Wake Me Up.wav')) # import the sound file

sound_played = False
# sound has not been played, so calling set_volume() will return an error

screen = pygame.display.set_mode((640, 480)) # make a screen

running = True
while running: # main loop
    for event in pygame.event.get():
        if event.type == QUIT:
            running = False
        elif event.type == MOUSEBUTTONDOWN: # play the sound file
            channel = sound.play()
            sound_played = True
            # start setting the volume now, from this moment where channel is defined

    # calculate the pan
    pan = pygame.mouse.get_pos()[0] / pygame.display.get_surface().get_size()[0]
    left = pan
    right = 1 - pan

    # pan the sound if the sound has been started to play
    if sound_played:
        channel.set_volume(left, right)

    pygame.display.flip()

【讨论】:

  • channel.set_volume(left, right) NameError: name 'channel' is not defined 我应该添加:'channel = pygame.mixer.Channel(0)' ???
  • 抱歉,我编辑了我的答案。如果没有播放声音,我忘了管理程序不需要设置音量的事实。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多