2015-01-13 1 views
1

텍스트 입력을위한 가상 키보드를 작성해야하는데,이 작업을 위해 Python 및 Qt (PyQt) 라이브러리를 사용할 계획입니다. 문제는 KeyPress를 내부 Qt 이벤트로 시뮬레이트하는 방법을 모르지만 실제 키보드의 시뮬레이션처럼 실제 키보드처럼 작동 할 수 있으므로 내 컴퓨터의 응용 프로그램과 상호 작용할 수 있습니다. 이것에 관해 Qt 문서에서 아무것도 찾을 수 없습니다. 그래서 PyQt/Qt를 통해이를 수행 할 수있는 방법이 있습니까? 아니면 파이썬 라이브러리를 사용해야할까요?파이썬/PyQt에서 실제 키보드의 키 누르기를 시뮬레이트하는 방법은 무엇입니까?

+0

그래서 [아니오]를 의미합니다 (http://stackoverflow.com/questions/2035310/how-can-i-simulate-user-interaction-key-press-event-in-qt)? – 101

+0

@figs이 함수는 응용 프로그램 내부에서만 작동하는 것처럼 보이지만 수신기 위젯이 있어야합니다. 하지만 실제 키보드를 시뮬레이트하려면 앱이 필요하므로 브라우저에서 텍스트를 입력 할 때 앱을 사용할 수 있습니다. –

+1

플랫폼에 따라 다릅니다. 당신은 Qt로 그것을 할 수 없습니다. Windows에서는 PyWin32를 사용하여 WinApi 기능을 호출 할 수 있습니다. – Meefte

답변

2

나는 이것이 PyQt 질문이라는 것을 알고 있지만, OP의 요청에 따라 파이썬 솔루션을 찾는 데 도움이되는 경우 C++ 예제를 제공 할 것입니다.

키보드를 시뮬레이션하는 C++ 측에서는 키 누르기 이벤트를 응용 프로그램의 이벤트 루프에 게시하여 수행합니다. 이것들은 '내부 Qt 이벤트'로 간주 될 수 있지만, 물리적 인 키 누름에 대해 수신되는 인터페이스와 완전히 동일합니다. 다음과 같이 그들은 달성과 같습니다 PyQt는 QCoreApplcation API를 통해 찾고

QKeyEvent *event = new QKeyEvent (QEvent::KeyPress, Qt::Key_Enter); 
QCoreApplication::postEvent (receiver, event); 

, 그와 똑같이 일을 할 수 있어야하므로 postEvent 기능은 존재 (불행하게도 나는 익숙 해요로 예를 제공 할 수 없습니다 writting python 스크립트).

+0

도움을 주셔서 감사합니다.하지만이 경우 수신기는 무엇입니까? –

+0

Receiver는 keypress 이벤트를 처리하는'QObject '중 하나입니다. 기본 창, 텍스트 편집, 키 누르기 이벤트 필터가있는 다른 위젯 일 수 있습니다. 기본적으로 실제 키를 누르는 핸들러가 될 것으로 기대했던 'QObject'를 선택하십시오. –

1

같은 문제가있었습니다.

삐뚤 거리는 소리가 아주 좋고 어리 석습니다.

import pyautogui 
pyautogui.typewrite("the stuff") 

또는 당신은 실제로 문자의 키 사용을 눌러 시뮬레이션하려면 :이 도움이 https://pyautogui.readthedocs.org/en/latest/

희망 :

import pyautogui 
pyautogui.keypressDown("the stuff") 
pyautogui.keypressUp("the stuff") 

여기 문서입니다.

관련 문제