2017年8月24日 星期四

Python 的內建 GUI 模組 Tkinter 測試 (1) : 建立視窗

源自於
http://yhhuang1966.blogspot.tw/2016/05/python-gui-tkinter.html


Python 內建的 GUI 開發模組 Tkinter (意思是 Tk Interface), 初步覺得比用 Java 的 Swing 還要來得容易, 因此就來學看看唄!

Tk 原先是為 Tcl 語言所開發的 GUI 套件, 因為是 Tcl 的第一個擴充, 所以現在都合起來稱呼為 Tcl/Tk. Tcl 是一種以 string-based 的跨平台工具命令式直譯語言 (Tool command language), 繼承了 LISP/C/Shell 等語言的優點, 並具有語法簡單, 容易擴展與可靈活嵌入其他語言的特點, 而且全面支持 unicode.
而 Tkinter 是 Python 內建的標準模組, 內部嵌入了 Tcl/Tk GUI 套件, 用來在 Python 中建構 GUI 圖形介面程式, 它具有如下優點 :
  1. 簡單易學 :
  2. 比 Python 其他 GUI 要容易, 甚至於我覺得比學 Java Swing 還容易..
  3. 程式碼精簡 :
  4. 以很短的程式碼便能產生強大功能的 GUI 程式.
  5. 跨平台 :
  6. 同樣的程式可以在 Linux/Windows/Mac 等系統上執行.

https://docs.python.org/2/library/tkinter.html
在 Python 中使用 Tkinter 需先匯入模組 : 


from Tkinter import * 


但書裡說不建議使用後面這種方式, 因為此方法是匯入 Tkinter 所有函數與屬性, 這樣會占用較多記憶體, 而且容易讓命名空間混淆, 並使得 debug 難度增加. 不過, 這種方式使用起來較方便 (凡事皆有代價).
比較常見的匯入方式是幫 Tkinter 取個別名 :
import Tkinter as tk

注意, 在 Python 3 要用小寫的 tkinter.
這樣就能使用 tk 這個別名來呼叫此模組內的函數 :
tk.函數名稱()
匯入模組就可以呼叫 Tk() 函數建立一個視窗實體 :
import Tkinter as tk
win=tk.Tk()
如果沒有取別名, 就要用 Tkinter.Tk() :
import Tkinter
win=Tkinter.Tk()
然後呼叫此視窗實體之 mainloop() 函數將此視窗加入事件監視迴圈, 這樣就會產生 GUI 視窗了.
win.mainloop()
真是太簡單了, 建立一個空視窗只要三行程式碼!

#use python version3.6.2

import tkinter as tk
win=tk.Tk()
win.mainloop()





不過在 Python 2 中的模組名稱 Tkinter 到 Python 3 版後已被改為小寫的 tkinter, 使用時要注意所用之 Python 版本, 匯入時注意該用首字大寫與否. 

不過 Python 2 下以 Tkinter 所寫的 GUI 程式可以利用 2to3 程式轉成 Python 3 版的程式, 








沒有留言:

張貼留言