В настоящее время я использую многопроцессорность, поэтому я могу получить пользовательский ввод при выполнении другого кода. Для меня эта версия кода работает на Ubuntu 19.04, но для моего друга она не работает на Windows.
import getch
import time
from multiprocessing import Process, Queue
prev_user_input = ' '
user_input = ' '
# Getting input from the user
queue = Queue(1)
def get_input():
char = ' '
while char != 'x':
char = getch.getch()
queue.put(char)
# Starting the process that gets user input
proc = Process(target=get_input)
proc.start()
while True:
# Getting the users last input
while not queue.empty():
user_input = queue.get()
# Only print user_input if it changes
if prev_user_input != user_input:
print(user_input)
prev_user_input = user_input
time.sleep(1/10)
Как я могу заставить этот код работать на Windows?
Также пользовательский ввод отстает на один ввод. Если пользователь нажимает кнопку, он печатает только после нажатия другой кнопки. Решения о том, как это исправить, также могут помочь.
Редактировать 1: Он использует Python 3.7.4, а я использую 3.7.3.
Я попробовал этот код в соответствии с предложением
import msvcrt
import time
from multiprocessing import Process, Queue
prev_user_input = ' '
user_input = ' '
# Getting input from the user
queue = Queue(1)
def get_input():
char = ' '
while char != 'x':
char = msvcrt.getch()
queue.put(char)
# Starting the process that gets user input
if __name__ == '__main__':
proc = Process(target=get_input)
proc.start()
while True:
# Getting the users last input
while not queue.empty():
user_input = queue.get()
# Only print user_input if it changes
if prev_user_input != user_input:
print(user_input)
prev_user_input = user_input
time.sleep(1/10)
Но символы не печатались.
Редактировать 2: Я использую модуль msvcrt
на окнах и модуль getch
на Ubuntu,Извините, что не разъяснил это ранее в посте.