python?tkinter中的Frame控件用法詳解
Frame和LabelFrame控件
對于一個稍微復雜的軟件,界面上肯定會劃分多個功能區(qū),每個功能區(qū)內部又有一些子功能區(qū),如果直接用按鈕在窗口中亂排,那么軟件的設計邏輯就比較腦殘。而為了實現(xiàn)這種套娃模式,tkinter提供了Frame控件,簡單地說,F(xiàn)rame就是一個可以容納控件的容器,有了這個,就可以窗口中套著大Frame,大Frame套小Frame這樣套下去。
import tkinter as tk
win = tk.Tk()
for i in range(3):
frm = tk.Frame(win)
frm.pack(side=tk.LEFT, expand=tk.YES, fill=tk.Y)
for j in range(3):
btn = tk.Button(frm, text=f"{i,j}", width=10)
btn.pack(side=tk.TOP,expand=tk.YES,fill=tk.X)
win.mainloop()效果如下

當然,從感官上來說,上面的這種布局結構其實看不太出來應用了Frame組件。相比之下,LabelFrame就稍有特點。將上述繪圖代碼中的tk.Frame(win)改為tk.LabelFrame(win, text=f"第{i}列"),就可以得到下圖

Frame參數(shù)
由于LabelFrame比Frame多了個標題,所以比Frame更復雜,簡單起見,先介紹Frame的參數(shù)。一般Frame支持的參數(shù),LabelFrame都支持。
首先,height和width用來設置寬度和高度;padx和pady用于設置水平和垂直方向上的邊距。下面的表中給出了一些有關Frame邊框的配色設置
| 選項 | 含義 |
|---|---|
| background/bg | 設置背景顏色,默認值由系統(tǒng)指定 |
| borderwidth/bd | 指定的邊框寬度,默認2像素 |
| takefocus | 設為True時,可接受輸入焦點,默認False |
| highlightbackground | 未獲得焦點的時候高亮邊框的顏色 |
| highlightcolor | 獲得焦點的時候高亮邊框的顏色 |
| highlightthickness | 指定高亮邊框的寬度,默認1或2像素 |
下面設置一下背景色和邊框
import tkinter as tk
def showFrames(frms):
for i, frm in enumerate(frms):
frm.pack(side=tk.LEFT, expand=tk.YES, fill=tk.Y)
for j in range(3):
btn = tk.Button(frm, text=f"{i,j}", width=10)
btn.pack(side=tk.TOP,expand=tk.YES,fill=tk.X)
win = tk.Tk()
frms = [tk.Frame(win, bg='LightPink', bd=bd, takefocus=True,
highlightbackground="gray",
highlightcolor="red",
highlightthickness=bd,
) for bd in (2, 5, 10)]
showFrames(frms)
win.mainloop()效果如下,當按下tab鍵時,可以看到被選中的Frame邊框變紅

LabelFrame參數(shù)
LabelFrame比Frame多了標題,相應多出來的參數(shù)基本都是有關文字設置的。
| 選項 | 含義 |
|---|---|
| text | 指定本,可以包含換行符 |
| font | 文本字體 |
| foreground/fg | 文本顏色 |
| labelanchor | 文本顯示位置,默認"nw" |
| labelwidget | 指定一個組件替代text |
其中,labelanchor可選位置有"n", “ne”, “e”, “se”, “s”, “sw”, “w”, “nw”, 或 “center”,其ewsn代表東西南北,上北下南左西右東。
下面設置一下
win = tk.Tk()
frms = [tk.LabelFrame(win, text=lc, labelanchor=lc, bd=5,
fg='green', takefocus=True, highlightbackground="gray",
highlightcolor="red") for lc in ("nw", "s", "ne")]
showFrames(frms)
win.mainloop()效果如下

到此這篇關于python tkinter中的Frame控件用法詳解的文章就介紹到這了,更多相關python tkinter Frame控件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
利用python實現(xiàn).dcm格式圖像轉為.jpg格式
今天小編就為大家分享一篇利用python實現(xiàn).dcm格式圖像轉為.jpg格式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
詳解利用OpenCV提取圖像中的矩形區(qū)域(PPT屏幕等)
這篇文章主要介紹了詳解利用OpenCV提取圖像中的矩形區(qū)域(PPT屏幕等),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-07-07
pytorch 批次遍歷數(shù)據(jù)集打印數(shù)據(jù)的例子
今天小編就為大家分享一篇pytorch 批次遍歷數(shù)據(jù)集打印數(shù)據(jù)的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12

