2014-09-21 3 views
4

Как получить результат из текстового поля ms calculator, который отображает результат любых математических операций? Swapy (v.0.4.3) показывает мне, что это текстовое поле имеет значение «Static2», после запуска такого простого скрипта я получаю пустой список. Здесь мой код:Получение значения с помощью pywinauto из текстового поля

from pywinauto import * 
n=[] 
app=Application() 
app.start_("calc.exe") 
app.calc.Button11.ClickInput() 
app.calc.Button20.ClickInput() 
app.calc.Button11.ClickInput() 
app.calc.Button21.ClickInput() 
n=app.calc.Static2.Texts()#here i expected to get the number 
print n 

Где я сделал не так?

ответ

5

Попробуйте

text = app.calc.Static3.WindowText() 

Как я могу видеть в Spy ++, Notepad.exe (Win7 версия) имеет 4 статические коробки. Третий имеет непустой текст. Итак, вам нужно идентифицировать его по имени «Static3», потому что «Static1» и «Static0» идентифицируют одно и то же статическое поле (это немного странно, да, это функция pywinauto).

Для получения более подробной информации об использовании расследования

app.calc.PrintControlIdentifiers() 
+0

PrintControlIdentifiers() дает мне ту же информацию, как swapy сделал об имени этого текстового поля и, к сожалению, ваш код ничего не изменилось. Кстати, почему вы говорите о блокноте;) и что такое Spy ++? Это недорогой аналог? –

+0

Spy ++ - это инструмент, распространяемый с MS Visual Studio. Сколько статики напечатано PrintControlIdentifiers()? Просто попробуйте Static1, Static2, Static3, Static4 шаг за шагом. Один из них должен содержать правильный текст. –

+0

'app.calc.Window_ (class_name = 'Static', ctrl_index = 5) .WindowText()' должен помочь с гарантией. Я проверил его прямо сейчас. –

Смежные вопросы