Tkinter 是 Python 自帶的 GUI 庫, 以部件 Widget
為其主要核心. 因此本文先行介紹一些基本的內容, 後面再來說明各部件的使用.
表格式的部件佈局方式 grid(), 引數選項有下面幾項:
column row |
每一格的代表方式由行column 及列row 來表示, 都是由 0 開始算起. |
columnspan rowcolumn |
佔有多少格則由行數columnspan 及列數rowspan 來表示, (2, 2) 代表部件佔用 4 格. |
ipadx ipady |
部件內部水平及垂直方向的間隔 |
padx pady |
部件外部水平及垂直方向的間隔 |
sticky | 每一格的寛度由該列的最大寛度決定, 高度則由行的最大高度決定. 因此格子很可能比部件還大, 所以部件在格子中的位置, 由 sticky 決定1. 內定為置中 CENTER 2. 靠在邊上的正中, N (上), S (下), E (右), W (左) .3. 靠在角落上, NE (右上角), NW (左上角), SE (右下角), SW (左下角).4. 拉長, NS (垂直), EW (水平), NSEW (全部延伸).5. 其他, 可以是 N , E , S 及W 的組合(加+ 在一起) |
in_ | 設定新的父部件in_ , 該部件必須是本部件建立時的父部件的子部件. |
部件在部局完成後, 就會有一些資訊可供運用, 因此提供以下方法
w.grid_bbox(column=None, row=None, col2=None, row2=None) | 格子cloumn 到col2 (含), row 到row2 (含) 所佔的座標框 (left_x,>(left_x, top_y, width, height) |
w.grid_forget() | 隱藏部件, 但其原有的grid 選項會全部失去, grid() 會再度顯示部件 |
w.grid_info() | 部件grid 選項及其值的字典 |
w.grid_location(x, y) | 座標點 (x, y) 位置的格子 (col, row) |
w.grid_propagate() | 延伸部件的大小, 內建為 1, 0 則不延伸 |
w.grid_remove() | 隱藏部件, 但其原有的grid 選項仍會保留, grid() 會再度顯示部件 |
w.grid_size() | 返回部件的水平及垂直的格子數 (columnspan, rowspan) |
w.grid_slaves(row=None, column=None) | 返回在某格子 (row, column) 中的部件列表, None 表示無部件 |
視窗尺寸變化時, 部件的尺寸變化由父部份的表格設定而定.
w.columnconfigure(N, option=value, ...) | 設定 column N 選項 |
w.rowconfigure(N, option=value, ...) | 設定 row N 選項 |
選項如下所示
minsize | 點素的最小尺寸, 在沒有部件時, 仍然會不顯示. |
pad | 對最大的格子提供額外的間距 |
weight | 延伸格子更多的空間, 單位為 1/4 尺寸 |
注: 要能在視窗尺寸變化時延伸部件, 必須在父部件中, 以 columnconfigure
及 rowconfigure
設定 weight
選項, 在部件中也必須在 grid
方法中設定 sticky
可延伸.
部件常用的選項
尺寸 Dimension
- integer 點素
- string 整數與單位
- c - 釐米
- i - 英吋
- m - 毫米
- p - 印表機點 (約 1/72吋)
座標 Coordinate
- 左上角為 (0, 0)
- 右方為正 x 軸
- 下方為正 y 軸
顏色 color
- 前置 ‘#’ 的十六進位字串, ‘#rgb’, ‘#rrggbb’, ‘#rrrgggbbb’, r, g, b 為紅, 綠, 藍.
- 標準顏色名, 如 ‘white’, ‘black’, ‘red’, ‘green’, ‘magenta’, …
請參考 www.tcl.tk/man/tcl8.5/TkCmd/colors....
字型 font
(‘family’, size, ‘style’) 如 (‘Courier New’, 12, ‘bold’), style 可以是 ‘bold’ (粗體), ‘italic’ (斜體), ‘underline’ (下底線), ‘overstrike’ (刪除線) 的組合.
使用 tkinter 的 font. 如
from tkinter import font as Font font = Font.Font(option) # 必須要有主視窗建立才能呼叫
tkinter.font 的選項
family 字型系列字串 size 字型高度, 正值為點數, 負值為點素 weight 粗體字或一般字, 'bold' 或 'normal' slant 斜體字或一般字, 'italic' 或 'roman' underline 下底線, 0 或 1 overstrike 刪除線, 0 或 1 X window 系統中, 可以使用 X 字型名
可以使用
tkinter.font.families()
取得可用的字型系列字串, 必須要有主視窗建立才能呼叫.Font 對像的方法
actual(option=None) 返回 font 字典中的實際值, 可能內容會因無法使用, 而與設定值不同. cget(option) 返回選項值 configure(option, ...) 改變選項值, 所有使用到該字型的部件會一起改變. copy() 複製一個 font 對像 measure(text) 返回字串的點素寛度, 斜體字可能會超出其寛度. metrics(option) 返回字型規格值的字典. 字型規格
ascent 基線到頂端的高度 descent 基線到底端的高度 fixed 固定寬度 (0) 或不同寛度 (1) 的字型 linespace 全部的高度, 行高
定位 Anchors
設定專案的位置, NW/N/NE/W/CENTER/E/SW/S/SE
花邊 Relief
部件外部的花邊, FLAT/RAISED/SUNKEN/GROOVE/RIDGE, 內定寛度為 2.
點陣圖 Bitmap
選項- ‘error’, ‘gray75’, ‘gray50’, ‘gray25’, ‘gray12’, ‘hourglass’, ‘info’, ‘questhead’, ‘question’, and ‘warning’. 或者使用具有X 點陣圖格式檔案‘@pathname’
Cursor 滑鼠圖形
可用圖形很多, 請參考 Tkinter 檔案
Image 圖片
xbm 點陣圖格式使用 tkinter.BitmapImage.
tk.BitmapImage(file=f[, background=b][, foreground=c])
預設 foreground 為 black pixels, background 為 transparent.
gif, pgm and ppm 使用 tkinter.PhotoImage.
tk.PhotoImage(file=f)
更多格式的圖片, 可以使用 ImagTk
幾何尺寸 Geometry ‘wxh±x±y‘
頂層視窗的尺寸及位置以點素為單位, 正值的 x/y 為左上, 負值的 x/y 為右下.
視窗名稱 Window name
頂層視窗與根視窗是互相獨立的, 前者可以有無數個, 但後者只能有一個. 直接視窗名如
".parent.child"
, 相對視窗名則不含根視窗, 或者也沒有父視窗, 如"child"
. parent 以及child 都是整數. str(w) 可以取得部件的路徑名.線頭與接點 Cap and join
- Cap - 線頭
BUT/PROJECTING/ROUND - Join - 線與線的接點
ROUND/BEVEL/MITER
- Cap - 線頭
點線的樣式 Dash pattern
- dash = (n1, …) 前整數為畫點數, 後整數為不畫點數, 重複該動作, 並重其內容來畫所有的線長
- dashoff = n, 代表 dash 項的第一個引數, 前 n 個點略過, 不是不畫, 而是點數變少.
點陣圖的對齊 Stipple pattern match
- offset - 區域的調整偏差
- outlineoffset - 輪廓的調整偏差
- ‘x,y’ 絕對的偏差點
- ‘#x,y’ 相對的偏差點
- 偏差的參考點 tk.NE, tk.SE, tk.NW, tk.SW, tk.N, tk.E, tk.S, tk.W, tk.CENTER
本作品採用《CC 協議》,轉載必須註明作者和本文連結