如何用wxPython,PyQt,PySide或Tkinter解释Python?

Phi*_*hil 1 python user-interface wxpython tkinter pyside

我很好奇并且在过去一小时内一直在阅读使用Python进行GUI开发的内容.在阅读wxPython文档,PyQt,诺基亚Qt的Python绑定以及Tkinter之后,我想到了一个问题.

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

所以我想知道,这些"小工具包"什么情况?

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

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

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

我期待通过Python解释器与Python应用程序(稍微简单易懂)的解释相比较,了解后台发生的事情.

谢谢.

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

jdi*_*jdi 8

这只是关于"GUI工具包"的一个非常普遍的高级解释......

假设您决定使用Qt框架.该框架是用C++编写的.可以使用两种不同的python绑定,允许用python中的GUI应用程序编写与C++版本相同的API.

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

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

然后是C++层与平台的窗口管理器进行通信,将与平台无关的API调用转换为特定于平台的内容,例如如何精确绘制按钮或菜单.

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