Tkinter (01) 基本選項的說明

Jason990420發表於2020-07-12

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, SW的組合(加+在一起)
in_ 設定新的父部件in_, 該部件必須是本部件建立時的父部件的子部件.

部件在部局完成後, 就會有一些資訊可供運用, 因此提供以下方法

w.grid_bbox(column=None, row=None, col2=None, row2=None) 格子cloumncol2 (含), rowrow2(含) 所佔的座標框 (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 尺寸

注: 要能在視窗尺寸變化時延伸部件, 必須在父部件中, 以 columnconfigurerowconfigure 設定 weight 選項, 在部件中也必須在 grid 方法中設定 sticky 可延伸.

部件常用的選項

  1. 尺寸 Dimension

    • integer 點素
    • string 整數與單位
      • c - 釐米
      • i - 英吋
      • m - 毫米
      • p - 印表機點 (約 1/72吋)
  2. 座標 Coordinate

    • 左上角為 (0, 0)
    • 右方為正 x 軸
    • 下方為正 y 軸
  3. 顏色 color

    • 前置 ‘#’ 的十六進位字串, ‘#rgb’, ‘#rrggbb’, ‘#rrrgggbbb’, r, g, b 為紅, 綠, 藍.
    • 標準顏色名, 如 ‘white’, ‘black’, ‘red’, ‘green’, ‘magenta’, …
      請參考 www.tcl.tk/man/tcl8.5/TkCmd/colors....
  4. 字型 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 全部的高度, 行高
  5. 定位 Anchors

    設定專案的位置, NW/N/NE/W/CENTER/E/SW/S/SE

ExePww8U7P.png!large

  1. 花邊 Relief

    部件外部的花邊, FLAT/RAISED/SUNKEN/GROOVE/RIDGE, 內定寛度為 2.

5O4zv3AtdX.png!large

  1. 點陣圖 Bitmap

    選項- ‘error’, ‘gray75’, ‘gray50’, ‘gray25’, ‘gray12’, ‘hourglass’, ‘info’, ‘questhead’, ‘question’, and ‘warning’. 或者使用具有X 點陣圖格式檔案‘@pathname’

egUrYe6mJQ.png!large

  1. Cursor 滑鼠圖形

    可用圖形很多, 請參考 Tkinter 檔案

  2. 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

  3. 幾何尺寸 Geometry ‘wxh±x±y

    頂層視窗的尺寸及位置以點素為單位, 正值的 x/y 為左上, 負值的 x/y 為右下.

  4. 視窗名稱 Window name

    頂層視窗與根視窗是互相獨立的, 前者可以有無數個, 但後者只能有一個. 直接視窗名如".parent.child", 相對視窗名則不含根視窗, 或者也沒有父視窗, 如"child". parent 以及child 都是整數. str(w) 可以取得部件的路徑名.

  5. 線頭與接點 Cap and join

    • Cap - 線頭
      BUT/PROJECTING/ROUND
    • Join - 線與線的接點
      ROUND/BEVEL/MITER

RI0OA3WQyV.png!large

  1. 點線的樣式 Dash pattern

    • dash = (n1, …) 前整數為畫點數, 後整數為不畫點數, 重複該動作, 並重其內容來畫所有的線長
    • dashoff = n, 代表 dash 項的第一個引數, 前 n 個點略過, 不是不畫, 而是點數變少.
  2. 點陣圖的對齊 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

S2wmUaAoe9.png!large

本作品採用《CC 協議》,轉載必須註明作者和本文連結

Jason Yang

相關文章