在鼠标悬停的右侧或左侧扬声器上播放声音 [英] Playing sound on right or left Speaker on MouseOver
问题描述
我正在尝试使用 PyQt5 在 python 中制作小程序.该程序将有两个按钮,中间有一个标签.当鼠标移过标签时,我想调用一个 def,以更改按钮的颜色并从特定扬声器(左或右)播放声音
I am trying to make small program in python, using PyQt5. The program will as have two buttons, and a label in the middle. When the mouse goes over the label, I want to call a def, in order to change the button's color and play a sound from specific speaker (left or right)
我按照一些帖子尝试了 pygame,但没有.声音在两个声道中播放.
I tried pygame, following some posts, but nothing. The sound is playing in both channels.
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()
有没有办法解决这个问题并选择左右扬声器?
Is there a way to fix this and choose the left-right speaker?
另外,有没有办法在标签上调用定义,鼠标悬停在标签上?
Also, is there a way to call a def, On Mouse Over a label?
推荐答案
一般使用 pygame
时,更喜欢调用 pygame.init()
来初始化所有pygame
模块而不是单独输入 pygame.
module
.init()
.它将节省您的时间和代码行数.
When you use pygame
in general, prefer calling pygame.init()
to initialise all of the pygame
modules instead of typing separately pygame.
module
.init()
. It will save you time and lines of code.
然后,要在 pygame
中播放声音文件,我一般使用 pygame.mixer.Sound
获取文件,然后调用声音对象的play()
函数.
Then, to play a sound file in pygame
, I generaly use pygame.mixer.Sound
to get the file, then I call the play()
function of the sound object.
所以下面导入一个声音文件,然后根据鼠标X位置进行播放和平移
So the following imports a sound file, then plays and pans it according to the mouse X position
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()
这篇关于在鼠标悬停的右侧或左侧扬声器上播放声音的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!