Найти - Пользователи
Полная версия: Прверка нажатия клавиши в консольной программе
Начало » Python для экспертов » Прверка нажатия клавиши в консольной программе
1 2
kt315e
Порылся по форумам, результат:
import os
while 1:
a = os.popen("./a.out")
if a.readlines()[0].strip(): break
Исходный код a.out:
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int mykbhit(void)
{
int fd;
char c;
fd = fileno(stdin);
fcntl(fd, F_SETFL, O_NONBLOCK);
if (read(fd, &c, sizeof(char)) < 0)
return 0;
return 1;
}

int main()
{
int res;
res = mykbhit();
if(res)
printf("1\n");
else
printf("\n");
return res;
}
Анализирую вывод сишной утилиты.
Всем спасибо!
o7412369815963
если нажмете кнопку во время работы питона, то утилита наверно не отловит нажатие.
а вообще, решение с потоками в “100” раз лучше.
doza_and
o7412369815963
решение с потоками в “100” раз лучше
А не упоминавшееся тут решение с использованием tkinter наверное в 101 раз лучше. Короче будет и разрабатывалось для привненсения интерактивности.
kt315e
o7412369815963
если нажмете кнопку во время работы питона, то утилита наверно не отловит нажатие.
Отлавливает. Вроде всё то же самое можно сделать через модуль fcntl в питоне. Как в следующий раз понадобится, доделаю :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB