多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 导航 - [索引](../genindex.xhtml "总目录") - [模块](../py-modindex.xhtml "Python 模块索引") | - [下一页](installed.xhtml "“为什么我的电脑上安装了 Python ?”") | - [上一页](windows.xhtml "Python在Windows上的常见问题") | - ![](https://box.kancloud.cn/a721fc7ec672275e257bbbfde49a4d4e_16x16.png) - [Python](https://www.python.org/) » - zh\_CN 3.7.3 [文档](../index.xhtml) » - [Python 常见问题](index.xhtml) » - $('.inline-search').show(0); | # [图形用户界面(GUI)常见问题](#id3) 目录 - [图形用户界面(GUI)常见问题](#graphic-user-interface-faq) - [图形界面常见问题](#general-gui-questions) - [Python 是否有平台无关的图形界面工具包?](#what-platform-independent-gui-toolkits-exist-for-python) - [Tkinter](#tkinter) - [wxWidgets](#wxwidgets) - [Qt](#qt) - [Gtk+](#gtk) - [Kivy](#kivy) - [FLTK](#fltk) - [OpenGL](#opengl) - [有哪些Python的GUI工具是某个平台专用的?](#what-platform-specific-gui-toolkits-exist-for-python) - [有关Tkinter的问题](#tkinter-questions) - [我怎样“冻结”Tkinter程序?](#how-do-i-freeze-tkinter-applications) - [在等待 I/O 操作时能够处理 Tk 事件吗?](#can-i-have-tk-events-handled-while-waiting-for-i-o) - [在Tkinter中键绑定不工作:为什么?](#i-can-t-get-key-bindings-to-work-in-tkinter-why) ## [图形界面常见问题](#id4) ## [Python 是否有平台无关的图形界面工具包?](#id5) 针对不同的(操作系统或)平台,有多种工具包可供选择。虽然有些工具包还没有移植到 Python 3 上,但至少目前 [Tkinter](#tkinter) 以及 [Qt](#qt) 是兼容 Python 3 的。 ### [Tkinter](#id6) Python 的标准编译包含了 [tkinter](../library/tk.xhtml#tkinter)。这是一个面向对象的接口,指向 Tcl/Tk 微件包。 该接口大概是最容易安装(因为该接口包含在 Python 的大部分 [二进制发行版](https://www.python.org/downloads/) \[https://www.python.org/downloads/\] 中)和使用的工具包。要了解 Tk 的详情,比如源代码等,可访问 [Tcl/Tk 项目主页](https://www.tcl.tk) \[https://www.tcl.tk\]。 Tcl/Tk 可完整移植至 Mac OS X,Windows 和 Unix 操作系统上。 ### [wxWidgets](#id7) wxWidgets (<https://www.wxwidgets.org>) 是一个自由、可移植的 GUI 图形用户界面类库,使用 C++ 编写。它可以在多个操作系统平台上提供原生自然的界面观感。包括Windows、Mac OS X、 GTK 和 X11 平台在内,都是wxWidgets 当前稳定支持的平台。在语言绑定适配方面,wxWidgets 类库可用于较多语言,包括 Python,Perl,Ruby等。 [wxPython](https://www.wxpython.org) \[https://www.wxpython.org\] 是 wxWidgets 的 Python 适配。虽然该绑定在更新进度上经常会稍稍落后于 wxWidgets,但它利用纯 Python 扩展,提供了许多其他语言绑定没有实现的特性。wxPython 有一个活跃的用户和开发者社区。 wxWidgets 和 wxPython 都是自由开源库。宽松的许可证允许人们在商业软件、自由软件和共享软件中使用它们。 ### [Qt](#id8) Qt 工具包 (可使用 [PyQt](https://riverbankcomputing.com/software/pyqt/intro) \[https://riverbankcomputing.com/software/pyqt/intro\] 或 [PySide](https://wiki.qt.io/PySide) \[https://wiki.qt.io/PySide\]) 及 KDE ([PyKDE4](https://techbase.kde.org/Languages/Python/Using_PyKDE_4) \[https://techbase.kde.org/Languages/Python/Using\_PyKDE\_4\]) 有多个绑定适配可供选择。 PyQt 当前相较 PySide 更成熟,但如果你想编写专有软件,就必须要从 [Riverbank Computing](https://www.riverbankcomputing.com/commercial/license-faq) \[https://www.riverbankcomputing.com/commercial/license-faq\] 购买 PyQt 许可证。 PySide 则可以自由使用于各类软件。 Qt 4.5 以上版本使用 LGPL 进行许可;此外,商业许可证可从 [Qt 公司](https://www.qt.io/licensing/) \[https://www.qt.io/licensing/\] 那里获得。 ### [Gtk+](#id9) 面向 Python 的 GObject 内检绑定 <https://wiki.gnome.org/Projects/PyGObject> 可以用来编写 GTK+ 3 程序。可以参考 [Python GTK+ 3 导览](https://python-gtk-3-tutorial.readthedocs.io) \[https://python-gtk-3-tutorial.readthedocs.io\]。 更早的、针对 [Gtk+ 2 工具包](https://www.gtk.org) \[https://www.gtk.org\] 的 PyGtk 绑定,是由 James Henstridge 实现的。具体请参考 <<http://www.pygtk.org>>。 ### [Kivy](#id10) [Kivy](https://kivy.org/) \[https://kivy.org/\] 是一种跨平台图形用户界面库,同时支持桌面操作系统(Windows,macOS 和 Linux)以及移动设备(Android,iOS)。该库使用 Python 和 Cython 编写,可以使用一系列窗口后端。 Kivy 是自由的开源软件,使用 MIT 许可证分发。 ### [FLTK](#id11) [the FLTK toolkit](http://www.fltk.org) \[http://www.fltk.org\] 的Python绑定是简单却功能强大且成熟的跨平台窗口系统,可以在 [the PyFLTK project](http://pyfltk.sourceforge.net) \[http://pyfltk.sourceforge.net\] 里获得相关信息。 ### [OpenGL](#id12) 对于OpenGL绑定,请参阅 [PyOpenGL](http://pyopengl.sourceforge.net) \[http://pyopengl.sourceforge.net\]。 ## [有哪些Python的GUI工具是某个平台专用的?](#id13) 通过安装 [PyObjc Objective-C bridge](https://pythonhosted.org/pyobjc/) \[https://pythonhosted.org/pyobjc/\],Python程序可以使用Mac OS X的Cocoa库。 Mark Hammond的 [Pythonwin](windows.xhtml#windows-faq) 包括一个微软基础类(MFC)的接口和一个绝大多数由使用MFC类的Python写成的Python编程环境。 ## [有关Tkinter的问题](#id14) ### [我怎样“冻结”Tkinter程序?](#id15) Freeze是一个用来创建独立应用程序的工具。 当冻结(freeze) Tkinter程序时,程序并不是真的能够独立运行,因为程序仍然需要Tcl和Tk库。 一种解决方法是将程序与 Tcl 和 Tk 库一同发布,并且在运行时使用环境变量 `TCL_LIBRARY` 和 `TK_LIBRARY` 指向他们的位置。 为了获得真正能独立运行的应用程序,来自库里的 Tcl 脚本也需要被整合进应用程序。 一个做这种事情的工具叫 SAM (stand-alone modules,独立模块) ,它是 Tix distribution (<http://tix.sourceforge.net/>) 的一部分。 在启用 SAM 时编译 Tix ,在 Python 文件 `Modules/tkappinit.c` 中执行对 `Tclsam_init()` 等的适当调用,并且将程序与 libtclsam 和 libtksam 相链接(可能也要包括 Tix 的库)。 ### [在等待 I/O 操作时能够处理 Tk 事件吗?](#id16) 在 Windows 以外的其他平台上可以,你甚至不需要使用线程! 但是你必须稍微修改一下你的 I/O 代码。 Tk 有与 Xt 的 `XtAddInput()` 对应的调用,它允许你注册一个回调函数,当一个文件描述符可以进行 I/O 操作的时候,Tk 主循环将会调用这个回调函数。 参见 [File Handlers](../library/tkinter.xhtml#tkinter-file-handlers)。 ### [在Tkinter中键绑定不工作:为什么?](#id17) 经常听到的抱怨是:已经通过 `bind()` 方法绑定了事件的处理程序,但是,当按下相关的按键后,这个处理程序却没有执行。 最常见的原因是,那个绑定的控件没有“键盘焦点”。请在 Tk 文档中查找 focus 指令。通常一个控件要获得“键盘焦点”,需要点击那个控件(而不是标签;请查看 takefocus 选项)。 ### 导航 - [索引](../genindex.xhtml "总目录") - [模块](../py-modindex.xhtml "Python 模块索引") | - [下一页](installed.xhtml "“为什么我的电脑上安装了 Python ?”") | - [上一页](windows.xhtml "Python在Windows上的常见问题") | - ![](https://box.kancloud.cn/a721fc7ec672275e257bbbfde49a4d4e_16x16.png) - [Python](https://www.python.org/) » - zh\_CN 3.7.3 [文档](../index.xhtml) » - [Python 常见问题](index.xhtml) » - $('.inline-search').show(0); | © [版权所有](../copyright.xhtml) 2001-2019, Python Software Foundation. Python 软件基金会是一个非盈利组织。 [请捐助。](https://www.python.org/psf/donations/) 最后更新于 5月 21, 2019. [发现了问题](../bugs.xhtml)? 使用[Sphinx](http://sphinx.pocoo.org/)1.8.4 创建。