框架部件的建立及其選項
框架不像一般的部件, 基本上就是一個容器, 可以放進其他的部件, 每一個容器內的部件佈置都是自成一個格局.
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) |
範例視窗及程式碼
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 協議》,轉載必須註明作者和本文連結