图形用户界面常见问题¶
通用 GUI 问题¶
Python 有哪些 GUI 工具包?¶
Python 的标准构建包含一个面向对象的 Tcl/Tk 小部件集接口,称为 tkinter。它可能是最容易安装(因为它包含在大多数 Python 二进制分发版中)和使用的。有关 Tk 的更多信息,包括源代码的指针,请参阅 Tcl/Tk 主页。Tcl/Tk 完全可移植到 macOS、Windows 和 Unix 平台。
Tkinter 问题¶
如何冻结 Tkinter 应用程序?¶
Freeze 是一个用于创建独立应用程序的工具。当冻结 Tkinter 应用程序时,应用程序将不是真正的独立应用程序,因为应用程序仍然需要 Tcl 和 Tk 库。
一个解决方案是将应用程序与 Tcl 和 Tk 库一起发布,并在运行时使用 TCL_LIBRARY
和 TK_LIBRARY
环境变量指向它们。
各种第三方冻结库,如 py2exe 和 cx_Freeze,都内置了对 Tkinter 应用程序的处理。
在等待 I/O 时能否处理 Tk 事件?¶
在 Windows 以外的平台上,可以,而且您甚至不需要线程!但您需要稍微重构您的 I/O 代码。Tk 具有 Xt 的 XtAddInput()
调用的等效功能,它允许您注册一个回调函数,当文件描述符上可能进行 I/O 时,该函数将从 Tk 主循环中调用。请参阅 文件处理器。
Tkinter 中键绑定不起作用:为什么?¶
一个常见的抱怨是,即使按下了相应的键,使用 bind()
方法绑定到事件的事件处理程序也无法得到处理。
最常见的原因是绑定适用的部件没有“键盘焦点”。请查看 Tk 文档中的焦点命令。通常,通过点击部件来赋予它键盘焦点(但标签除外;请参阅 takefocus 选项)。