По файлу в python 3.9
У меня есть определенный текст и он записан в файл txt формата и представим что его название будет word. Мне нужно чтобы при активации программы, можно было по нажатию на любую клавишу клавиатуры, выводилось следующее слово. И еще вопрос, удобно же будет взаимодействие клавиатуры и кода совершать с помощью библиотеки Pygame?
Ответы (2 шт):
На файла формата .txt не знаю, лучше использовать формат .py, а из него импортировать переменную. Типа в word.py будет text = 'то что должно напечататься', а в program.py будет импортироваться переменная: from word import text.
А на счёт фиксации нажатия клавиш, лучше использовать библиотеку keyboard. Для установки открой терминал и напиши pip install keyboard, после в пайтон файле импортируй библиотеку при помощи import keyboard. Теперь тебе нужен цикл который будет проверять нажатие клавиши:
while True:
if keyboard.is_pressed('клавиша'):
pass
# код
while keyboard.is_pressed('клавиша'): # Этот цикл нужен что бы код постоянно не повторялся
pass
Так же нужно напечатать текст, для этого создадим функцию enter:
def enter(sentence:str):
for letter in sentence:
keyboard.press(letter) # нажатие клавиши
keyboard.release(letter) # отпускание клавиши
Теперь нужно всё совместить, вот финальный код, файл word:
word.py:
text = 'твой текст'
program.py:
from word import text
def enter(sentence:str):
for letter in enter:
keyboard.press(letter) # нажатие клавиши
keyboard.release(letter) # отпускание клавиши
while True:
if keyboard.is_pressed('клавиша'):
enter(text)
while keyboard.is_pressed('клавиша'): # Этот цикл нужен что бы код постоянно не повторялся
pass
Но не забывай: при нажатии клавиши нажатая буква удалятся не будет, а если в text будет буква на которую ты назначил код, она может повлеять на программу
Например можно сделать так:
import keyboard
l = []
# Читаем файл и сохраняем список слов.
with open("word.txt", "r", encoding='utf-8') as f:
l = f.read().split()
max_index = len(l) # сколько слов в списке
index = 0
# Выводим слово равное текущему индексу и увеличиваем индекс на 1
def on_triggered(e):
global index
global max_index
for _ in keyboard._pressed_events:
if index < max_index:
print(l[index])
index += 1
# выводит новое слово по нажатию на клавишу
keyboard.hook(on_triggered)
print("Нажмите ESC для остановки")
keyboard.wait("esc")