图形用户界�(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 分�版的一部分 (https://tix.sourceforge.net/)。

在�用 SAM 的情况下构建 Tix,在 Python 的 Modules/tkappinit.c 中正确执行对 Tclsam_init() 等函数的调用,并与 libtclsam 和 libtksam 相链接(�能也�包括 Tix 库)。

在等待 I/O �作时能够处� Tk 事件�?¶

在 Windows 以外的平�上,你甚至�需�使用线程� 但您必须�微调整一下你的 I/O 代�。 Tk 有与 Xt 的 XtAddInput() 对应的调用,它�许你注册一个回调函数,当�以对一个文件�述符进行 I/O �作时,该函数将从 Tk 的主循环中被调用。 �� 文件处�程�。

在Tkinter中键绑定�工作:为什么?¶

一个�常�到的抱怨是:已�通过 bind() 方法 绑定 到事件的事件处��柄在对应的键被按下时并没有被处�。

最常�的原因是,那个绑定的控件没有“键盘焦点�。请在 Tk 文档中查找 focus 指令。通常一个控件�获得“键盘焦点�,需�点击那个控件(而�是标签;请查看 takefocus 选项)。