Frame 框架
Frame 是 tkinter 裡可以用來放置其他元件的「框架」,每個 Frame 都很像一個小視窗,透過 Frame 的應用,就能更彈性的配置各種元件,這篇教學會介紹如何在 tkinter 視窗裡加入 Frame 框架。
快速導覽:
因為 Google Colab 不支援 tkinter,所以請使用本機環境 ( 參考:使用 Python 虛擬環境 ) 或使用 Anaconda Jupyter 進行實作 ( 參考:使用 Anaconda )。
加入 Frame 框架
建立 tkinter 視窗物件後,透過 Frame 方法,就能在視窗物件中建立 Frame 框架,必要的參數有一個,表示要加入的視窗物件,建立 Frame 框架後再使用 pack() 方法將其加入 ( 參考 pack 參數設定 ),下方的程式碼執行後,除了會加入一個 Frame,還會在 Frame 中加入一個 Label,顯示 hello 的文字 ( 位置、大小和顏色都使用預設值 )。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
frame = tk.Frame(root) # 加入 Frame 框架
frame.pack()
label = tk.Label(frame, text='hello') # 將 Label 放在指定的 Frame 裡
label.pack()
root.mainloop()
Frame 框架參數設定
加入 Frame 之後,可以透過 Frame 的參數調整內容的樣式,下方列出 Frame 和其他元件相同的參數:
參數 | 說明 |
---|---|
padx | 內容和標籤左右邊界的間距 ( px ),預設 1。 |
pady | 內容和標籤上下邊界的間距 ( px ),預設 1。 |
bg/background | 背景顏色,可以使用十六進位色碼或顏色名稱。 |
cursor | 滑鼠移動到標籤的樣式,可以設定 arrow、circle、cross、plus...等,預設 arrow。 |
relief | 邊框樣式,可以設定 flat、sunken、raised、groove、ridge、solid,預設 flat。 |
bd/borderwidth | 邊框粗細,預設 1。 |
設定 Frame 樣式與位置
Frame 框架預設寬高尺寸和內容的最大寬高相同,而最後呈現在視窗裡的位置,則以 Frame 擺放的順序來決定,以下方的程式碼而言,雖然 Label1 比 Label2 早放入,但因為分別放在不同的 Frame 裡,最後因為 Frame1 比較晚放到視窗裡,呈現的結果就會擺在後方。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
frame1 = tk.Frame(root, pady=10, padx=10, bg='#f90') # 第一個 Frame 元件
frame2 = tk.Frame(root, pady=10, padx=10, bg='#09c') # 第二個 Frame 元件
label1 = tk.Label(frame1, text='hello', width=10) # 放到 frame1 裡的 label
label1.pack()
label2 = tk.Label(frame2, text='world', width=10) # 放到 frame2 裡的 label
label2.pack()
frame2.pack() # 先放 frame2
frame1.pack() # 再放 frame1
root.mainloop()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~