【问题标题】:How is Python interpreted with wxPython, PyQt, PySide or Tkinter?Python 如何用 wxPython、PyQt、PySide 或 Tkinter 解释?
【发布时间】:2012-12-01 19:02:10
【问题描述】:

我很好奇,过去一个小时一直在阅读有关使用 Python 进行 GUI 开发的文章。在阅读了 wxPython、PyQt、Nokia 的 Qt Python 绑定以及 Tkinter 的文档后,我想到了一个问题。

当我使用 Python 创建控制台应用程序时,它使用嵌入式 Python 解释器运行(我假设在我的情况下通常是 cpython)。

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

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

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

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

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

谢谢。

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

【问题讨论】:

  • “嵌入”是指系统捆绑的python吗?
  • 是和不是。基本上我的意思是系统上已经存在的解释器在系统范围内可用。我使用这个词是为了不与这些小部件工具包可能安装的解释器混淆,以供其执行机制专用。
  • 没有奇迹发生。 GUI 工具包作为库链接到解释器中。
  • @larsmans,阅读 SO 上的帖子,我看到了 cmets 和关于无法与小部件共享纯 Python 代码结果的投诉(在 Qt 绑定的情况下)。如果所有代码库都简单地链接到解释器,情况就不应该如此。而且我不明白这些通常使用 C/C++ 开发的工具包是如何与 Python 相关联的;因此我的问题的原因。
  • @Phil:它们作为动态库链接,使用 dlopen 或在 Windows 上传递的内容。可能是某些工具包在 Windows 上安装了它自己的 Python 副本,但这只是一个普通的 Python 解释器,就像您在 C:\Python27(或任何地方)中安装的解释器一样。

标签: python user-interface wxpython tkinter pyside


【解决方案1】:

这只是关于“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 语言。

【讨论】:

  • 您好@jdi,这是一个简单、清晰且出色的解释。谢谢!因此,如果我做对了,编译的 C/C++ 小部件代码会创建与 Python 的绑定,这些绑定会调用它们的函数,进而绘制 GUI 并启用交互。对吗?
  • 差不多。 C/C++ 已编译并且是独立的。您可以只构建 Qt 并用 C++ 编写 Qt 应用程序。然后你拿sip 之类的东西,写下如何在 C++ 和你想要制作的 python 对象之间进行映射的描述。 sip 为 python 生成绑定,通过 sip 层处理所有调用。
猜你喜欢
  • 2012-09-24
  • 2014-04-24
  • 2014-03-25
  • 1970-01-01
  • 2015-06-20
  • 2012-09-21
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
相关资源
最近更新 更多