图形用户界面常见问题解答 — Python 文档
图形用户界面常见问题解答
一般 GUI 问题
Python 有哪些 GUI 工具包?
Python 的标准构建包括 Tcl/Tk 小部件集的面向对象接口,称为 tkinter。 这可能是最容易安装和使用的(因为它包含在 Python 的大多数 二进制发行版 中)。 有关 Tk 的更多信息,包括指向源的指针,请参阅 Tcl/Tk 主页 。 Tcl/Tk 完全可移植到 macOS、Windows 和 Unix 平台。
根据您的目标平台,还有多种选择。 可以在 python wiki 上找到跨平台 和 特定于平台的 GUI 框架的 列表。
Tkinter 问题
如何冻结 Tkinter 应用程序?
Freeze 是一种创建独立应用程序的工具。 冻结 Tkinter 应用程序时,应用程序不会真正独立,因为应用程序仍需要 Tcl 和 Tk 库。
一种解决方案是将应用程序与 Tcl 和 Tk 库一起交付,并在运行时使用 TCL_LIBRARY
和 TK_LIBRARY
环境指向它们变量。
为了获得真正独立的应用程序,构成库的 Tcl 脚本也必须集成到应用程序中。 支持它的一种工具是 SAM(独立模块),它是 Tix 发行版 (http://tix.sourceforge.net/) 的一部分。
在启用 SAM 的情况下构建 Tix,对 Tclsam_init()
执行适当的调用等。 在 Python 的 Modules/tkappinit.c
中,并与 libtclsam 和 libtksam 链接(您可能还包括 Tix 库)。
我可以在等待 I/O 时处理 Tk 事件吗?
在 Windows 以外的平台上,是的,您甚至不需要线程! 但是您必须稍微重组您的 I/O 代码。 Tk 与 Xt 的 XtAddInput()
调用等效,它允许您注册一个回调函数,当文件描述符上的 I/O 可能时,它将从 Tk 主循环调用。 请参阅 文件处理程序 。
我无法在 Tkinter 中使用键绑定:为什么?
一个经常听到的抱怨是,即使按下了适当的键,绑定到 bind()
方法的事件的事件处理程序也不会得到处理。
最常见的原因是绑定应用的小部件没有“键盘焦点”。 查看焦点命令的 Tk 文档。 通常小部件通过点击获得键盘焦点(但不是标签;请参阅 takefocus 选项)。