圖形使用者介面常見問題解答

通用 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 選項)可以使部件獲得鍵盤焦點。