Название: PythonQt (пр-во имен) Отправлено: Igors от Октябрь 30, 2013, 22:09 Добрый день
Код Ошибка в пытоне - не видит класса vec (хотя я могу добавить переменную такого типа из cpp приложения, но создать в пытоне нет). Так работает Код Как мне сделать класс vec видимым из пытона не заставляя пользователя писать import? Спасибо Название: Re: PythonQt (пр-во имен) Отправлено: Old от Октябрь 30, 2013, 23:02 Как мне сделать класс vec видимым из пытона не заставляя пользователя писать import? Не знаю точно как там в PythonQt и проверять лень, но я бы вначале попробовал:PythonQtObjectPtr PythonQt::importModule( const QString &name ) или выполнял бы импорт нужного модуля выполняя питоновский код через: QVariant PythonQtObjectPtr::evalScript( const QString &script, int start = Py_file_input ) P.S. Кстати, в предыдущей теме второй вариант с исполнением питоновского импорта в нужном контексте вам уже показывали. Название: Re: PythonQt (пр-во имен) Отправлено: sergek от Октябрь 31, 2013, 09:21 Как мне сделать класс vec видимым из пытона не заставляя пользователя писать import? Сделать это самому:Код: // cpp Название: Re: PythonQt (пр-во имен) Отправлено: Igors от Октябрь 31, 2013, 09:59 importModule пробовал, возвращает не NULL, но результат тот же. Выполнить эту строку самому через evalScript - все норм, работает, спасибо.
Если уж разговор о пр-ве имен, то такой вопрос: вот я написал в скрипте Код: pt = vec() Спасибо Название: Re: PythonQt (пр-во имен) Отправлено: sergek от Октябрь 31, 2013, 10:09 Как бы мне зачистить все переменные что пользователь насоздавал при предыдущем выполнении скрипта? средствами Python:Код: >del pt Название: Re: PythonQt (пр-во имен) Отправлено: Igors от Октябрь 31, 2013, 10:33 средствами Python: А как мне узнать что есть переменнвя pt (ведь не каждую переменная мапится мной)?Код: >del pt Название: Re: PythonQt (пр-во имен) Отправлено: sergek от Октябрь 31, 2013, 11:49 А как мне узнать что есть переменнвя pt (ведь не каждую переменная мапится мной)? http://webonrails.ru/post/274/ (http://webonrails.ru/post/274/)http://docs.python.org/2/tutorial/ (http://docs.python.org/2/tutorial/) Еще можно использовать функцию расширения Python, основанную на PythonQt::getVariable, но придется ее делать методом зарегистрированного класса и вызывать ее для какого-либо глобального объекта. К сожалению, PythonQt не предоставляет возможности регистрации обычных C-функций (а в API Python такая возможность есть). Название: Re: PythonQt (пр-во имен) Отправлено: Igors от Октябрь 31, 2013, 21:40 http://webonrails.ru/post/274/ (http://webonrails.ru/post/274/) Намек понял, спасибо, изучаю. Но тут др проблема - как тормознуть скрипт? Вот допустим во время передачи значения из скрипта в приложение - отлуп (так нельзя). Как мне испустить exception (или по-другоиу) но сказать скрипту "нет, свободен" ?http://docs.python.org/2/tutorial/ (http://docs.python.org/2/tutorial/) Прошу прощения за сумбурность вопросов - но проект есть проект. Спасибо за понимание Название: Re: PythonQt (пр-во имен) Отправлено: sergek от Ноябрь 01, 2013, 09:28 Но тут др проблема - как тормознуть скрипт? Вот допустим во время передачи значения из скрипта в приложение - отлуп (так нельзя). Как мне испустить exception (или по-другоиу) но сказать скрипту "нет, свободен" ? "Ну, барин, ты задачи ставишь!" (с) М.Захаров. хз. Выполнение скрипта можно прекратить нажатием Ctrl+C. Может, добавить функцию расширения, которая будет эмулировать нажатие этих клавиш? Название: Re: PythonQt (пр-во имен) Отправлено: Igors от Ноябрь 02, 2013, 12:03 С прерыванием все оказалось довольно просто - нужно выбросить std exception, напр
Код Вызов слота (а все происходит в слотах) обрамлен try/catch С удалением переменных пока сделал так Код Должен быть (по смыслу) и др вариант - при выполнении каждого скрипта заводить новый модуль пытона, а по окончании его удалять. Однако так я должен делать импорт всех необходимых модулей (math и др) всякий раз - не накладно ли? Также возможность использовать в одном скрипте переменные другого - может оказаться необходимым. Как считают более опытные товарищи? Спасибо |