Integration of Python console into a GUI C++ application

浪子不回头ぞ 提交于 2019-12-03 08:22:26

问题


I'm going to add a python console widget (into a C++ GUI) below some other controls:

Many classes are going to be exposed to the python code, including some access to GUI (maybe I'll consider PyQt).

Should I run the Python code in a separate thread?

I think it's a good approach, because GUI won't be frozen while executing long commands. But on the other hand, shouldn't other controls be disabled to preserve objects' state and avoid conflicts?


回答1:


Since you're apparently wanting to embed a Python interpreter to use Python as a scripting language in a what seems to be a Qt application, I suggest you have a look at PythonQt.

With the PythonQt module, Python scripts will be able to interact with the GUI of your host application.

Unlike PyQt and Qt Jambi, PythonQt is not designed to provide support for developers writing standalone applications. Instead, it provides facilities to embed a Python interpreter and focuses on making it easy to expose parts of the application to Python.

If I understood your needs correctly, that's all you need.

PyQt and PySide (officially supported by Nokia) aim at accessing Qt features from a Python program by providing bindings.

It's possible to embed PyQt in your application (even a Qt application) and your Python scripts will be able to provide their own GUI while interacting with your application scripting API.

About thread safety, Qt offers a thread-safe way of posting events, and signal-slot connections across threads.

References:

  • Embedding Python into Qt Applications.
  • Notes for embedding python in your C/C++ app
  • EmbedingPyQtTutorial


来源:https://stackoverflow.com/questions/2038247/integration-of-python-console-into-a-gui-c-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!