2013-04-22 6 views
3

HwndWrapper.Texts() "이 컨트롤의 각 항목에 대한 텍스트를 반환합니다"를 사용하려하지만 u'Fight 계획 설정 대화 상자 '인 타일 만 반환합니다. 이유는 무엇입니까? 이 일이 일어 났습니까? 나는 pywinauto 문서와 난을 읽어 오후를 보냈다윈도우 내용을 텍스트 파일로 가져 오기

http://imageshack.us/photo/my-images/802/newpicturewe.png/

: 여기

prog=application.Application() 
prog.connect_(path=r'D:\Thesis\Euroscope\Euroscope.exe') 
w_handle = pywinauto.findwindows.find_windows(title=u'Fight plan setting dialog', class_name='#32770')[0] 
window = prog.window_(handle=w_handle) 
c=prog.Fightplansettingsdialog.Texts() 

내가 복사하기 위해 노력하고있어 윈도우의 화면입니다 :

코드는 다음입니다 이전과 같은 창 콘텐츠를 텍스트 파일로 가져 오는 방법을 찾을 수 없습니다 (DoubleClick()으로 각 항목을 클릭하고 복사 한 다음 TypeKeys가 너무 길어 Ctrl+C). 어떤 아이디어?

편집 : 또한 PrintControlIdentifiers을 문자열 파일에 쉽게 저장할 수 없음을 알았습니다. Doing c = prog.PrintControlIdentifiers()는 c를 묻는 경우 None을 반환합니다. 이 주변의 어떤 방법?

고맙습니다.

답변

2

모든 어린이를 돌면서 창에서 모든 텍스트를 얻을 수 있습니다. 그런데

all_texts = [] 
for child in window.Children(): 
    all_texts.extend(child.Texts()) 
all_texts = filter(lambda t:t, all_texts) # clear empty texts 

,

PS :-) '... 비행 계획'윈도우가 호출한다 보인다. 가상 컨트롤러를 도와 드리겠습니다!

UKHH - MDN91

+0

젠장, 정확히 내가 원하는 걸, 고마워! 그냥 그렇게 이해하지만 ... "필터 (lambda t : t, all_texts)"는 무엇을 의미합니까? 또한 childs.exts()의 읽기 순서는 Callsign 대신 IFR에서 읽기 시작하기 때문에 그래, "Fight plan"도 알게되었습니다. Euroscope 오류입니다 : D –

+0

(1). 텍스트()는 빈 텍스트/s가 포함 된 목록을 반환 할 수 있습니다. [ 'some text', '']. 그냥 ',' ',' ', ...을 많이 지 웁니다. lambda : t는' '(빈 문자열)에 대해 False를 반환합니다. (2) 주문이 지정되지 않았습니다. 따라서 구체적인 스타일을 찾고 있다면이 테이블에 따라 필드 이름과 덤프 텍스트가있는 정렬 된 테이블을 만드십시오. (3) 재미있는 실수 – SWAPYAutomation