python?tkinter中的Frame控件用法詳解
Frame和LabelFrame控件
對于一個稍微復(fù)雜的軟件,界面上肯定會劃分多個功能區(qū),每個功能區(qū)內(nèi)部又有一些子功能區(qū),如果直接用按鈕在窗口中亂排,那么軟件的設(shè)計(jì)邏輯就比較腦殘。而為了實(shí)現(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()效果如下

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

Frame參數(shù)
由于LabelFrame比Frame多了個標(biāo)題,所以比Frame更復(fù)雜,簡單起見,先介紹Frame的參數(shù)。一般Frame支持的參數(shù),LabelFrame都支持。
首先,height和width用來設(shè)置寬度和高度;padx和pady用于設(shè)置水平和垂直方向上的邊距。下面的表中給出了一些有關(guān)Frame邊框的配色設(shè)置
| 選項(xiàng) | 含義 |
|---|---|
| background/bg | 設(shè)置背景顏色,默認(rèn)值由系統(tǒng)指定 |
| borderwidth/bd | 指定的邊框?qū)挾?,默認(rèn)2像素 |
| takefocus | 設(shè)為True時,可接受輸入焦點(diǎn),默認(rèn)False |
| highlightbackground | 未獲得焦點(diǎn)的時候高亮邊框的顏色 |
| highlightcolor | 獲得焦點(diǎn)的時候高亮邊框的顏色 |
| highlightthickness | 指定高亮邊框的寬度,默認(rèn)1或2像素 |
下面設(shè)置一下背景色和邊框
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()效果如下,當(dāng)按下tab鍵時,可以看到被選中的Frame邊框變紅

LabelFrame參數(shù)
LabelFrame比Frame多了標(biāo)題,相應(yīng)多出來的參數(shù)基本都是有關(guān)文字設(shè)置的。
| 選項(xiàng) | 含義 |
|---|---|
| text | 指定本,可以包含換行符 |
| font | 文本字體 |
| foreground/fg | 文本顏色 |
| labelanchor | 文本顯示位置,默認(rèn)"nw" |
| labelwidget | 指定一個組件替代text |
其中,labelanchor可選位置有"n", “ne”, “e”, “se”, “s”, “sw”, “w”, “nw”, 或 “center”,其ewsn代表東西南北,上北下南左西右東。
下面設(shè)置一下
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()效果如下

到此這篇關(guān)于python tkinter中的Frame控件用法詳解的文章就介紹到這了,更多相關(guān)python tkinter Frame控件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python Pygame實(shí)現(xiàn)落球游戲詳解
本文主要介紹了利用Pygame實(shí)現(xiàn)落球小游戲,即屏幕上落下一個球,通過鼠標(biāo)移動,地下的木塊如果接上則加分,否則就減去一命,三條命用完則游戲結(jié)束。感興趣的可以學(xué)習(xí)2022-01-01
解決啟動django,瀏覽器顯示“服務(wù)器拒絕訪問”的問題
這篇文章主要介紹了解決啟動django,瀏覽器顯示“服務(wù)器拒絕訪問”的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
python 進(jìn)程 進(jìn)程池 進(jìn)程間通信實(shí)現(xiàn)解析
這篇文章主要介紹了python 進(jìn)程 進(jìn)程池 進(jìn)程間通信實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08
Python基于均值漂移算法和分水嶺算法實(shí)現(xiàn)圖像分割
圖像分割是將圖像分成若干具有獨(dú)特性質(zhì)的區(qū)域并提取感興趣目標(biāo)的技術(shù)和過程。這篇文章將詳細(xì)講解基于均值漂移算法和分水嶺算法的圖像分割,需要的可以參考一下2023-01-01
Python中for循環(huán)控制語句用法實(shí)例
這篇文章主要介紹了Python中for循環(huán)控制語句用法,較為詳細(xì)的分析了for循環(huán)語句的原理與相關(guān)使用技巧,需要的朋友可以參考下2015-06-06
python 如何把classification_report輸出到csv文件
這篇文章主要介紹了python 把classification_report輸出到csv文件的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05
Python實(shí)現(xiàn)讀取PDF中的文本,圖片與文檔屬性
PDF格式因其版式固定、內(nèi)容穩(wěn)定而被廣泛使用,本文將介紹如何用Python實(shí)現(xiàn)PDF文本讀取,圖片提取以及文檔屬性讀取?三大核心操作,適用于信息抽取,電子檔案處理等場景,有需要的可以了解下2025-06-06
python實(shí)現(xiàn)圖片轉(zhuǎn)字符小工具
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖片轉(zhuǎn)字符小工具,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04

