2013-02-12 4 views
1

Мне было поручено автоматизировать qml-программы. Я довольно новичок в python, а также Squish. Я пытаюсь найти способ, чтобы получить свойство идентификатора текстового элемента , например:Как найти свойство id элемента qml с помощью Squish?

Text{ 
id:testLabel 
text:"Hello" 
} 

Таким образом, в Squish, чтобы получить захватить объект я получаю (через Spy)

waitForObject(":GAMES.Hello_Text") 

Но вместо этого я хочу записать его как

waitForObject(":GAMES.testLabel_Text") 

Возможно ли это получить? Если нет, то каковы другие способы, которыми я могу это заняться.

ПРИМЕЧАНИЕ: Мне нужно сравнить текст на разных языках

ответ

2

Диагноз

Я думаю, что вы путаете «настоящие имена» с «символическими именами.» Я бы рекомендовал проверить Squishdocumentation about the objects map, но я понимаю, что символические имена Squish (имена, начинающиеся с двоеточия) по существу эквивалентны именам переменных. Это ключи, используемые для поиска идентификатора в вашем объекте.map.

Объект object.map содержит символическое имя и то, что Squish означает «настоящее имя». Настоящее имя соответствует шаблону соответствия, который можно использовать для поиска Qt-объекта. Например, вы можете иметь строк в вашем файле objects.map, которые выглядят как:

:GAMES.Hello_Text {name='Hello_Text' type='QLineEdit' visible='1' window=':GAMES'} 
:GAMES.testLabel_Text {name='testLabel_Text' type='QLineEdit' visible='1' window=':GAMES'} 

Как вы можете видеть, это говорит о том, что оба «: GAMES.Hello_Text» и «: GAMES.testLabel_Text» являются QLineEdit поля в окно «: GAMES» (само символическое имя с реальной спецификацией в другом месте объекта objects.map).

Потенциальные решения

Чтобы получить полную помощь, я рекомендовал бы разместить соответствующие записи из objects.map. Соответствующие записи будут те, для интересующих вас объектов, и, возможно, их ближайшие родители.

С оговоркой, что я не уверен точно, что вам нужно, вот три подхода, если вы ищете произвольные и программно определенные элементы в объекте, указанном символическим именем «: GAMES».

1.Посмотрите родительский объект и исследовать его свойства

games = waitForObject(":GAMES") 
mytext = games.testLabel_Text 

2.Посмотрите атрибуты родительского объекта

mytext = waitForObjectAttribute(":GAMES", "testLabel_Text") 

Обратите внимание, что в этом случае , "testLabel_Text" - произвольная текстовая строка, относящаяся к атрибуту объекта Spec символическое имя «: GAMES». Вы можете думать о waitForObjectAttribute() как аналогичный встроенному Python getattr().

3.Посмотрите нужную информацию, используя реальное имя

mytext = waitForObject("{name='testLabel_Text' type='QLineEdit' visible='1' window=':GAMES'}") 
+0

Спасибо, наконец-то мы смогли продемонстрировать, и мы получили идти вперед. Ценю вашу помощь. –