Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/103: Рейтинг темы: голосов - 103, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
1

Модуль msvcrt

18.06.2018, 23:20. Показов 18687. Ответов 16

Author24 — интернет-сервис помощи студентам
В своей программе мне понадобилась обработка нажатия клавиш на клавиатуре, и взор мой пал на встроенный модуль msvcrt. В самой программе я использую msvcrt.getch(). Насколько я понимаю, данная функция должна дождаться нажатия какой-либо клавиши, а затем вернуть, какая клавиша была нажата. Но у меня эта функция не только не дожидается нажатия клавиши, так ещё и постоянно выводит "b'xff'". Пытался найти подобную инфу - таковой нигде нет.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2018, 23:20
Ответы с готовыми решениями:

Нужна инфа по библиотеке msvcrt питон
Сейчас создаю небольшой проект. Для него мне надо чтобы программа реагировал на нажатие клавиш....

msvcrt: Control-H и Backspace Control-I и Tab и т. д
Код import msvcrt print(ord(msvcrt.getch())) выдаст 8, если пользователь нажмёт Backspace, но...

Зависает модуль tkinter при использовании модуль Time || python
По приколу решил создать клик тест на питоне. При этом использовал два модуля tkinter для красоты и...

Ругается на include msvcrt.inc / includelib msvcrt.lib
почему RadASM(masm32) может ругаться на include msvcrt.inc includelib msvcrt.lib ??? .586...

MSVCRT vs UCRT
Использую GCC 11.2.0 + MinGW-w64 9.0.0, которые доступны в двух runtime: MSVCRT и UCRT. Какой из...

16
1292 / 909 / 479
Регистрация: 05.12.2013
Сообщений: 3,074
18.06.2018, 23:52 2
Приведите ваш код

Вот рабочий пример

Python
1
2
3
4
5
6
7
8
9
import msvcrt
import sys
 
while True:
    pressedKey = msvcrt.getch()
    if ord(pressedKey) == ord('q'):    
       sys.exit()
    else:
       print ("Key Pressed:", ord(pressedKey))
1
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
19.06.2018, 00:01  [ТС] 3
Ваш вариант нерабочий, выходит то же самое
0
1292 / 909 / 479
Регистрация: 05.12.2013
Сообщений: 3,074
19.06.2018, 00:07 4
Цитата Сообщение от MrCatsss Посмотреть сообщение
Ваш вариант нерабочий
Очень даже рабочий, как видно на картинке, рассказывайте подробно что и как делаете
Миниатюры
Модуль msvcrt  
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
19.06.2018, 00:18  [ТС] 5
При запуске программы выводит одно и то же, если без использования orb, то будет тот же самый b'xff'
Миниатюры
Модуль msvcrt  
0
1292 / 909 / 479
Регистрация: 05.12.2013
Сообщений: 3,074
19.06.2018, 00:36 6
Может у вас кнопка на клавиатуре заела, 255 это код мультимедийных кнопок
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
19.06.2018, 00:41  [ТС] 7
Мультимедийные кнопки у меня работают только при зажатой кнопке function, а она заесть точно не может
0
1292 / 909 / 479
Регистрация: 05.12.2013
Сообщений: 3,074
19.06.2018, 00:42 8
В чем пишите код? Какая версия python?
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
19.06.2018, 00:58  [ТС] 9
Среда PyCharm, версия Python 3.6
0
1292 / 909 / 479
Регистрация: 05.12.2013
Сообщений: 3,074
19.06.2018, 01:11 10
Так может pycharm чудит, попробуйте из командной строки скрипт запустить
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
19.06.2018, 01:19  [ТС] 11
В IDLE то же самое происходит, но если запускать напрямую, без среды, то всё нормально
0
1292 / 909 / 479
Регистрация: 05.12.2013
Сообщений: 3,074
19.06.2018, 01:37 12
Тогда можно сделать так

Python
1
2
3
4
5
6
7
8
9
10
11
import msvcrt
import sys
 
while True:
    pressedKey = msvcrt.getch()
    if ord(pressedKey) == 255:
        continue
    if ord(pressedKey) == ord('q'):    
       sys.exit()
    else:
       print ("Key Pressed:", ord(pressedKey))
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
19.06.2018, 02:06  [ТС] 13
Возможно, кстати, что это из-за того, что у меня беспроводная клавиатура не лучшего качества. Может такое быть?
0
1292 / 909 / 479
Регистрация: 05.12.2013
Сообщений: 3,074
19.06.2018, 02:25 14
Можно отключить беспроводную клавиатуру и с экранной клавиатуры проверить как будет работать
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
19.06.2018, 13:49  [ТС] 15
Ничего не изменилось

Добавлено через 21 минуту
Ваш второй вариант тоже не будет рабочим для меня, т. к. функция всегда выводит 255, не обращая внимания на нажатые клавиши
0
Эксперт Python
5434 / 3857 / 1215
Регистрация: 28.10.2013
Сообщений: 9,553
Записей в блоге: 1
19.06.2018, 14:34 16
Цитата с багтрекера:
msvcrt.getch() does not block and wait for a keypress in IDLE. Returns immediately with b'\xff'.

Some of the suggested usage in the manual for sys.stdin does not work under IDLE. E.g. sys.stdin.detach() doesn't work in IDLE. On this last point, the manual has a caveat in the last line of the sys.stdin description that could exonerate it. Regardless, the behavior is inconsistent and makes for awkward UI when using IDLE.
1
1 / 1 / 0
Регистрация: 02.04.2019
Сообщений: 12
06.04.2019, 23:56 17
Работает спасибо
0
06.04.2019, 23:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2019, 23:56
Помогаю со студенческими работами здесь

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

Python 3.6.8 msvcrt.getch неработает
Доброго времени суток! У меня появилась проблема в Python 3.6.8: при использовании функции getch...

Настройки Intel c++. MSVCRT.LIB
В вижуалке 2010 все просто: мы кликами заходим в свойства конфигурации-компоновщик-командная строка...

Точка входа в процедуру в msvcrt.dll
Приветствую. Решил я перенести свою программу с WinForms на QT 6.2.2. И я столкнулся с такой...

Как подключить функцию из msvcrt.dll
добрый день. изучаю FASM. ПОДСКАЖИТЕ как можно подключить в файл некую функцию апи виндовс из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru