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

Модуль msvcrt

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

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

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

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

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

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

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

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  [ТС]
Ваш вариант нерабочий, выходит то же самое
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
19.06.2018, 00:07
Цитата Сообщение от MrCatsss Посмотреть сообщение
Ваш вариант нерабочий
Очень даже рабочий, как видно на картинке, рассказывайте подробно что и как делаете
Миниатюры
Модуль msvcrt  
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
19.06.2018, 00:18  [ТС]
При запуске программы выводит одно и то же, если без использования orb, то будет тот же самый b'xff'
Миниатюры
Модуль msvcrt  
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
19.06.2018, 00:36
Может у вас кнопка на клавиатуре заела, 255 это код мультимедийных кнопок
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
19.06.2018, 00:41  [ТС]
Мультимедийные кнопки у меня работают только при зажатой кнопке function, а она заесть точно не может
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
19.06.2018, 00:42
В чем пишите код? Какая версия python?
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
19.06.2018, 00:58  [ТС]
Среда PyCharm, версия Python 3.6
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
19.06.2018, 01:11
Так может pycharm чудит, попробуйте из командной строки скрипт запустить
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
19.06.2018, 01:19  [ТС]
В IDLE то же самое происходит, но если запускать напрямую, без среды, то всё нормально
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
19.06.2018, 01:37
Тогда можно сделать так

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  [ТС]
Возможно, кстати, что это из-за того, что у меня беспроводная клавиатура не лучшего качества. Может такое быть?
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
19.06.2018, 02:25
Можно отключить беспроводную клавиатуру и с экранной клавиатуры проверить как будет работать
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
19.06.2018, 13:49  [ТС]
Ничего не изменилось

Добавлено через 21 минуту
Ваш второй вариант тоже не будет рабочим для меня, т. к. функция всегда выводит 255, не обращая внимания на нажатые клавиши
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
19.06.2018, 14:34
Цитата с багтрекера:
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
Работает спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.04.2019, 23:56
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru