建立 Tkinter 視窗
這篇教學會介紹如何開始使用 Python 的內建函式庫 tkinter,並利用 tkinter 建立基本的應用程式視窗,以及介紹基本的視窗參數設定。
快速導覽:
因為 Google Colab 不支援 tkinter,所以請使用本機環境 ( 參考:使用 Python 虛擬環境 ) 或使用 Anaconda Jupyter 進行實作 ( 參考:使用 Anaconda )。
建立 tkinter 視窗
tkinter 是 Python 的內建函式庫,只要 import tkinter 就能使用,下方的程式碼執行後,會使用 Tk() 方法建立 tkinter 視窗物件,接著使用 mainloop() 將其放在主迴圈中一直執行,直到使用者關閉該視窗才會停止運作。
import tkinter as tk
root = tk.Tk() # 建立 tkinter 視窗物件
root.mainloop() # 放在主迴圈中
設定視窗標題、圖示
使用 title 可以設定視窗標題,iconbitmap 設定視窗圖示 ( Windows 限定,格式 .ico ),如果是 Mac 則可使用 tk.call 方法設定應用程式圖示。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio') # 設定標題
root.iconbitmap('favicon.ico') # 設定 icon ( 格式限定 .ico )
# 如果是 Mac 使用下面這行,可以使用 gif 或 png
# root.tk.call('wm', 'iconphoto', root._w, tk.PhotoImage(file='icon.gif'))
root.mainloop()
設定視窗長寬與位置
使用 geometry 方法定義視窗的「尺寸和位置」,下方的程式碼使用字串格式化的方法,將寬、高、左上座標提供給尺寸位置表達式,除了提供完整的尺寸與位置,也可以不提供尺寸、不提供位置或不提供尺寸位置,如果沒有提供尺寸與位置,視窗則會使用預設值顯示。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
width = 600
height = 400
left = 0
top = 0
root.geometry(f'{width}x{height}+{left}+{top}') # 定義視窗的尺寸和位置
root.mainloop()
如果要將視窗置中顯示,可先運用 winfo_screenwidth() 和 winfo_screenheight() 方法取得電腦螢幕長寬尺寸,經過數學計算後,就能將視窗置中顯示。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
window_width = root.winfo_screenwidth() # 取得螢幕寬度
window_height = root.winfo_screenheight() # 取得螢幕高度
width = 600
height = 400
left = int((window_width - width)/2) # 計算左上 x 座標
top = int((window_height - height)/2) # 計算左上 y 座標
root.geometry(f'{width}x{height}+{left}+{top}')
root.mainloop()
設定視窗最大寬度和高度
使用 minsize 方法可以設定視窗的「最小」長寬尺寸,使用 maxsize 則可以設定視窗的「最大」長寬尺寸。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.minsize(200, 200) # 設定視窗最小為 200x200
root.maxsize(500, 500) # 設定視窗最大為 500x500
root.mainloop()
設定視窗是否可縮放
使用 resizable 方法可以設定視窗是否可以縮放,resizable 包含兩個參數,分別是 x 方向與 y 方向,設定 True 表示可以縮放,設定 False 表示不能縮放。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.resizable(False, False) # 設定 x 方向和 y 方向都不能縮放
root.mainloop()
設定視窗背景色
設定視窗 configure 裡的 background,就能設定視窗的背景色,背景色可以使用十六進位的色碼,也可以輸入顏色的名稱,例如紅色 red、黑色 black...等。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.configure(background='#000') # 設定背景色黑色
root.mainloop()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~