3

我很好奇,过去一个小时一直在阅读有关使用 Python 进行 GUI 开发的内容。在阅读了 wxPython、PyQt、Nokia's Python bindings for Qt 和 Tkinter 的文档之后,我想到了一个问题。

当我使用 Python 创建控制台应用程序时,它使用嵌入式 Python 解释器运行(我假设通常是 cpython,如果不是总是这样的话)。

所以我想知道,这些“小部件工具包”是什么情况?

  • Python 代码是如何执行的,是什么解释它(或执行它)?

  • 我的 Python 代码的哪一部分是使用 Python 解释器解释的?

  • 或者 Python 代码是否得到词法分析,然后由小部件的工具包解析,然后解释和执行(或在构建期间编译)?

我期待了解与 Python 应用程序(更容易理解)与 Python 解释器的解释相比,在后台发生了什么。

谢谢你。

PS。无论哪个天才认为这个问题应该被关闭;很多人想知道外部库和系统的内部结构。尤其是那些不像看起来那么简单的东西。目前在 SE 上没有任何问题可以解释这一点。

4

1 回答 1

8

这只是关于“GUI工具包”的一个非常概括的高级解释......

假设您决定使用 Qt 框架。这个框架是用 C++ 编写的。可以使用两种不同的 Python 绑定,允许一种使用 Python 针对与 C++ 版本相同的 API 编写 GUI 应用程序。

python 绑定提供了对 C++ 代码的调用的包装。例如 PyQt4 使用sip,而 PySide 使用shiboken. 这些只是语言包装工具,它们采用规范来说明如何在 C++ 对象与其预期的 Python 接口之间进行映射。

好的,所以你开始使用 PyQt... 你编写的所有代码都必须通过 python 解释器。其中一些可能是纯python。其中一些会调用 C++ 库来创建像你的小部件这样的东西。在 Qt 中,将有一个与对应的 python 实例相关联的 C++ 指针。

然后是 C++ 层与您平台的窗口管理器进行通信,将独立于平台的 API 调用转换为特定于平台的东西,例如如何准确地绘制按钮或菜单。

无论您是仅创建控制台还是基于 GUI 的 Python 应用程序,这一切都通过 Python 解释器来解释您的 Python 代码。有些东西必须为你解释 python 语言。

于 2012-12-13T20:07:45.387 回答