Преобразование строки в имя экземпляра объекта - python - PullRequest
1 голос
/ 20 октября 2011

Я, наверное, все об этом ошибаюсь, но ...

Я пытаюсь заполнить QTreeView из данных SQL - используя QAbstractItemModel (и испытываю большие трудности с его пониманием). Один из руководств, которым я следую (самый простой), заполняет дерево, просто вызывая новые экземпляры Node и генерируя модель из списка. Узел имеет имя и родительский узел (как показано ниже). Это нормально, когда вы генерируете данные в программе. Это я могу почти следовать:)

Однако я хочу вывести данные из таблицы и использовать строку для определения правильного родительского узла - главным образом потому, что, если я перебираю записи, я не смогу назвать каждую из них, используя отдельную переменную (? ). Это будет для x в recs: node = Node ("name", parentnode).

Когда я делаю это, я получаю очевидное сообщение об ошибке, что строка не является правильным объектом и не имеет методов. Есть ли способ использовать строку, полученную из моей таблицы, для идентификации правильного «родительского» объекта (или это, или кто-то может указать мне в направлении очень базового учебника по модели Qtreeview, предназначенного для очень увлеченных, но не обязательных одаренных учеников) .

rootNode   = Node("Hips")
childNode0 = TransformNode("RightPirateLeg",        rootNode)
childNode1 = Node("RightPirateLeg_END",    childNode0)
childNode2 = CameraNode("LeftFemur",             rootNode)
childNode3 = Node("LeftTibia",             childNode2)
childNode4 = Node("LeftFoot",              childNode3)
childNode5 = LightNode("LeftFoot_END",          childNode4) 

Я понимаю, что я, вероятно, бегу, прежде чем смогу прийти сюда и заранее извиниться за свое невежество.

1 Ответ

2 голосов
/ 20 октября 2011

Строки являются именами глобальных переменных?Если это так, вы можете получить доступ к значению, к которому добавлена ​​глобальная переменная, с помощью globals()['name'], (заменив 'name' на строковое имя переменной, конечно.)

Или, что еще лучше, вместо засорения имен переменныхво всем глобальном пространстве имен вы можете использовать dict:

node={}
node['rootNode']=Node('Hips')
node['childNode0']=TransformNode('RightPirateLeg',node['rootNode'])
...

. Это позволяет очень легко сопоставлять имена строк и значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...