Я вставляю Python в мое приложение GUI, когда скрипт вызывает синтаксические ошибки, я хочу перенаправить сообщение об ошибке в текстовое поле, чтобы я мог знать, где ошибка.Как перенаправить Синтаксис Python Ошибка в текстовое поле в MFC или другой фреймворке графического интерфейса?
Мои коды очень просто:
Py_Initialize()
PyRun_SimpleString("execfile('my.py')");
Py_Finalize();
Если файл содержит синтаксическую ошибку, он может выглядеть так:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "my.py", line 3, in <module>
app=everedit.Ap
AttributeError: 'module' object has no attribute 'Ap'
Вышеуказанные сообщения можно увидеть в окне консоли, но теперь я хотите кэшировать эти сообщения в окне графического интерфейса пользователя. Окно GUI не имеет консоли. Я хочу выводить такие сообщения в текстовое поле.
Обратите внимание: я вставляю Python в C++, я хочу кэшировать синтаксическую ошибку Python на C++.
Покажите нам, что вы пробовали. И объясните, что вы на самом деле пытаетесь сделать. 'PyParse_SimpleParseString' просто разбирает код, не запуская и даже не компилируя ничего. Это действительно то, что вы хотите? Если это так, он вернет вам 'struct_node *' для главы дерева синтаксического анализа при успешном завершении или NULL при ошибке. Вы не смогли написать чек для NULL? – abarnert
Кроме того, вы действительно хотите только «SyntaxError»? Если скрипт выдает какое-то другое необработанное исключение, что вы хотите сделать? – abarnert
Мои коды очень просты: Py_Initialize() PyRun_SimpleString ("execfile ('my.py')"); Py_Finalize(); Если файл содержит синтаксическую ошибку, он может выглядеть так: TraceBack (самый последний вызов последнего): Файл "", линия 1, в Файл "my.py", строка 3, в приложение = everedit.Ap AttributeError: объект 'module' не имеет атрибута 'Ap' Вышеуказанные сообщения можно увидеть в окне консоли, но теперь я хочу кэшировать эти сообщения в окне графического интерфейса. Окно GUI не имеет консоли. Я хочу выводить такие сообщения в текстовое поле. –
xred