圖形使用者介面常見問答集¶
圖形使用者介面 (GUI) 的常見問題¶
Python 有哪些 GUI 套件?¶
Python 的標準版本會包含一個 Tcl/Tk 小工具集 (widget set) 的物件導向介面,稱為 tkinter。這可能是最容易安裝(因為它已包含在 Python 的大多數二進制發行版本中)和使用的。有關 Tk 的詳細資訊(包含指向原始碼的指標),請參閱 Tcl/Tk 首頁。Tcl/Tk 在 macOS、Windows 和 Unix 平台上是完全可攜 (portable) 的。
根據你要使用的平台,還有其他幾種選擇。在 python wiki 上可以找到一份跨平台的以及各平台專屬的 GUI 框架清單。
Tkinter 的問答¶
如何凍結 Tkinter 應用程式?¶
凍結 (freeze) 是一個能建立獨立應用程式的工具。在凍結 Tkinter 應用程式時,該應用程式不是真正的獨立,因為該應用程式仍然需要 Tcl 和 Tk 函式庫。
將應用程式與 Tcl 和 Tk 函式庫一併發送是一種解決方法,並在執行環境 (run-time) 使用 TCL_LIBRARY
和 TK_LIBRARY
環境變數來指向該函式庫。
Various third-party freeze libraries such as py2exe and cx_Freeze have handling for Tkinter applications built-in.
是否可以在等待 I/O 時處理 Tk 事件?¶
在 Windows 以外的平台上是可以的,你甚至不需要執行緒!但是,你必須稍微調整你的 I/O 程式碼。Tk 具有等效於 Xt 的 XtAddInput()
的函式呼叫,它能讓你記錄一個回呼 (callback) 函式,當 I/O 在一個檔案描述符 (file descriptor) 上可進行時,該函式將會從 Tk mainloop 被呼叫。請參閱File Handlers。
我無法讓鍵繫結 (key binding) 在 Tkinter 中作用:為什麼?¶
一個經常聽到的抱怨是,儘管事件處理程式 (event handler) 已經繫結到帶有 bind()
method 的事件,但在按下相應的鍵時,該事件也沒有被處理。
最常見的原因是,繫結到的小工具並沒有「鍵盤焦點 (keyboard focus)」。請查看 Tk 說明文件中關於焦點命令的敘述。通常,點擊一個小工具,會讓它得到鍵盤焦點(但不適用於標籤;請參閱 takefocus 選項)。