Воспроизведение случайного звука при нажатии клавиш [Python] - PullRequest
0 голосов
/ 22 октября 2019

Я новичок в Python, и я решил написать небольшой скрипт, который будет воспроизводить случайный звук при нажатии клавиш, как практика, и я вроде как застрял

Вот код;

import os
import keyboard, string, random
from playsound import playsound

path = "C:\\Users\\vilem\\Documents\\My_Stuff\\Py_Projects\\Temp\\keypress" #path to sound files

letter = string.ascii_letters #gets list of lover and uper case letters
digit = string.digits #gets list of numbers

while True:
    mp3Select = random.choice(os.listdir(path)) #selects random sound
    keypress = str(path + "\\" + mp3Select) #gets the path to the random sound

def keyboardPress():
    if keyboard.is_pressed(letter): #checks if letter was pressed
        playsound(keypress) #plays random sound
    elif keyboard.is_pressed(digit): #checks if digit was pressed
        playsound(keypress) #plays random sound

def main():
    while True:
        try:
            keyboardPress()
        except:
            pass

main()

Теперь проблема в том, что я не получаю никакого вывода и никаких ошибок. Я запускаю скрипт из cmd, и даже если я заставляю его печатать какую-то переменную, такую ​​как letter, она всегда застревает, и когда я останавливаю его с помощью «Ctrl + C», он выдает мне эту ошибку;

Traceback (most recent call last):
  File "C:\Users\vilem\Documents\My_Stuff\Py_Projects\Temp\typing.py", line 13, in <module>
    mp3Select = random.choice(os.listdir(path))
KeyboardInterrupt

Любая помощьвысоко ценится

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

вы можете сделать что-то подобное для достижения желаемой функциональности:

import os
import keyboard, string, random
from playsound import playsound
path = "C:\\Users\\vilem\\Documents\\My_Stuff\\Py_Projects\\Temp\\keypress" #path to sound files
letter = string.ascii_letters #gets list of lover and uper case letters
digit = string.digits #gets list of numbers

mp3Select = random.choice(os.listdir(path)) #selects random sound
keypress = str(path + "\\" + mp3Select) #gets the path to the random sound

pressedKey = input('Press any key then ENTER')

def keyboardPress():
    if pressedKey in letter or digit:
        playsound(keypress)

def main():
        keyboardPress()

main()

, если хотите, вы можете добавить определения selectedKey и нажатия клавиш в основную функцию в цикле, чтобы непрерывно запрашиватьновый ключ, и играть новый звук

0 голосов
/ 22 октября 2019

то, что вы делаете для чтения ключа, является неправильным, в python 3 попробуйте:

pressedKey=input()

, затем проверьте вход, чтобы воспроизвести звук, основанный на этом. что-то вроде:

if(presedKey is letter) or (is digit)

и что

while True:
mp3Select = random.choice(os.listdir(path)) #selects random sound
keypress = str(path + "\\" + mp3Select) #gets the path to the random sound

не принадлежит там, удалите его, вы можете попробовать что-то вроде:

import os
import keyboard, string, random
from playsound import playsound

path = "C:\\Users\\vilem\\Documents\\My_Stuff\\Py_Projects\\Temp\\keypress" #path to sound files

letter = string.ascii_letters #gets list of lover and uper case letters
digit = string.digits #gets list of numbers    
def keyboardPress():
    mp3Select = random.choice(os.listdir(path)) #selects random sound
    keypress = str(path + "\\" + mp3Select) #gets the path to the random sound
    while True:
        if letter.find(keyboard.read_key())>-1:
            playsound(keypress)
            break

def main():
    while True:
        try:
            keyboardPress()
        except:
            pass

main()

, и вы неиметь разные директории и звуки для цифр и букв, поэтому нет необходимости выполнять другие действия при нажатии клавиш другого типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...