Я новичок в python и в целом в кодировании, но я создаю программное обеспечение "музыкальный автомат", которое будет принимать данные от пользователя и открывать эту песню в spotify.У меня это работает довольно хорошо, но хотелось бы, чтобы он работал без монитора или мыши, только клавиатура (как обычный музыкальный автомат).
В результате мне нужно, чтобы окно ввода пользователя быловыводится на первый план каждый раз, когда он запрашивает ввод.Я определил этот процесс в функции yield_to_front ().
def bring_to_front():
global handle
handle = win32gui.FindWindowEx(0,0,None,r'C:\WINDOWS\py.exe')
print(handle)
win32gui.SetForegroundWindow(handle)
Я использую эту функцию в своей программе следующим образом:
def program():
global driver
driver = webdriver.Chrome()
site_login()
while True:
global handle
global s
global new_track
bring_to_front()
song_request()
close_extra_tabs()
if s == '*':
restart()
if s == '':
print('Song stopped')
else:
for x in song_list:
if x[0] == s:
new_track = x[2]
play_song()
print('Playing your song.')
break
elif x == 'not_found':
print('Song not found')
error_audio()
break
else:
continue
Функция site_login () открывает Chromeи входит в систему, чтобы спрайтировать, таким образом помещая это окно сверху.Первая итерация методаrate_to_front () в цикле while успешно помещает окно ввода на передний план и позволяет мне ввести код песни.Однако, как только я сделал это в первый раз, и Chrome снова был выведен на передний план (чтобы открыть песню), я получаю сообщение об ошибке на второй итерации метода take_to_front ().Проблема конкретно с win32gui.SetForegroundWindow (дескриптор).Я получаю сообщение об ошибке:
Traceback (most recent call last):
File "C:\Users\user1\Documents\Spotify Jukebox\Spotify Jukebox3.py", line 125, in <module>
program()
File "C:\Users\user1\Documents\Spotify Jukebox\Spotify Jukebox3.py", line 102, in program
bring_to_front()
File "C:\Users\user1\Documents\Spotify Jukebox\Spotify Jukebox3.py", line 62, in bring_to_front
win32gui.SetForegroundWindow(handle)
pywintypes.error: (0, 'SetForegroundWindow', 'No error message is available')
Я не могу понять, почему это работает в первый раз, но после этого работать не будет.Я нашел эту статью, которая, кажется, ссылается на ту же проблему.Решение говорит, что оно работает, если вы сначала отправите alt-ключ, но я не мог понять, как это сделать, на его примере.Как я уже сказал, я новичок во всем этом.Любая помощь будет оценена.Спасибо!