圖形使用者介面常見問題

通用 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_LIBRARYTK_LIBRARY 環境變數指向它們。

各種第三方凍結庫,如 py2exe 和 cx_Freeze,都內建了對 Tkinter 應用程式的處理。

在等待 I/O 時能否處理 Tk 事件?

在 Windows 以外的平臺上,可以,而且您甚至不需要執行緒!但您需要稍微重構您的 I/O 程式碼。Tk 具有 Xt 的 XtAddInput() 呼叫的等效功能,它允許您註冊一個回撥函式,當檔案描述符上可能進行 I/O 時,該函式將從 Tk 主迴圈中呼叫。請參閱 檔案處理器

Tkinter 中鍵繫結不起作用:為什麼?

一個常見的抱怨是,即使按下了相應的鍵,使用 bind() 方法繫結到事件的事件處理程式也無法得到處理。

最常見的原因是繫結適用的部件沒有“鍵盤焦點”。請檢視 Tk 文件中的焦點命令。通常,透過點選部件來賦予它鍵盤焦點(但標籤除外;請參閱 takefocus 選項)。