Tkinter (06) 框架部件 Frame

Jason990420發表於2020-07-22

框架部件的建立及其選項

框架不像一般的部件, 基本上就是一個容器, 可以放進其他的部件, 每一個容器內的部件佈置都是自成一個格局.

import tkinter as tk
parent = tk.Tk()
w = tk.Frame(parent, option, ...)
選項 說明
bg or background 背景顏色
bd or borderwidth 外框寛度, 內定為 0
cursor 在部件上方時,滑鼠的圖樣
height 垂直高度, 一般無效, 除非設定了 grid_propagate(0)
highlightbackground 非聚焦時的聚焦顏色
highlightcolor 聚焦時的聚焦顏色
highlightthickness 聚焦厚度,內定 1, 0 則無
padx 內部水平點素間隔, 一般框架都是緊貼內部件
pady 內部垂直點素間隔, 一般框架都是緊貼內部件
relief 外框花樣,內定為 FLAT
takefocus TAB 鍵在部件是否會迴圈焦點 0/1
width 水平寛度, 一般無效, 除非設定了 grid_propagate(0)

範例視窗及程式碼

Tkinter (06) 框架部件 Frame

from functools import partial
import tkinter as tk

def callback(bttn):
    status.configure(text=f'{bttn} clicked !')

def button(text, size, color):
    bttn = Button(right_frame, text=text, **size, **color, command=partial(callback, text))
    return bttn

black = {'bg':'black', 'fg':'white'}
green = {'bg':'green', 'fg':'white'}
blue = {'bg':'blue', 'fg':'white'}

root = tk.Tk()
root.wm_title("Frame Demo")
root.config(background = "#004000")

left_frame = tk.Frame(root, width=200, height = 600, bg="blue")
left_frame.grid(row=0, column=0, padx=10, pady=2)

left_head = tk.Label(left_frame, text="Instructions:", width=10)
left_head.grid(row=0, column=0, padx=10, pady=2)

left_instructions = Label(left_frame, text="1\n2\n2\n3\n4\n5\n6\n7\n8\n9\n", width=10)
left_instructions.grid(row=1, column=0, padx=10, pady=2)

right_frame = tk.Frame(root, width=200, height = 600, bg="yellow")
right_frame.grid(row=0, column=1, padx=10, pady=2)

button0 = button('Button0', {'width':20, 'height':1}, black)
button1 = button('Button1', {'width':20, 'height':1}, green)
button2 = button('Button2', {'width':20, 'height':1}, blue)
button0.grid(row=0, column=0)
button1.grid(row=0, column=1)
button2.grid(row=0, column=2)

bottom_frame = tk.Frame(right_frame, bg='red')
bottom_frame.grid(row=1, column=0, columnspan=3, padx=10, pady=2)

status = tk.Label(bottom_frame, width = 30, height = 10, takefocus=0)
status.grid(row=2, column=0, padx=10, pady=2)

root.mainloop() #start monitoring and updating the GUI
本作品採用《CC 協議》,轉載必須註明作者和本文連結

Jason Yang

相關文章