python?tkinter中的Frame控件用法詳解
Frame和LabelFrame控件
對(duì)于一個(gè)稍微復(fù)雜的軟件,界面上肯定會(huì)劃分多個(gè)功能區(qū),每個(gè)功能區(qū)內(nèi)部又有一些子功能區(qū),如果直接用按鈕在窗口中亂排,那么軟件的設(shè)計(jì)邏輯就比較腦殘。而為了實(shí)現(xiàn)這種套娃模式,tkinter提供了Frame控件,簡(jiǎn)單地說,F(xiàn)rame就是一個(gè)可以容納控件的容器,有了這個(gè),就可以窗口中套著大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)然,從感官上來(lái)說,上面的這種布局結(jié)構(gòu)其實(shí)看不太出來(lái)應(yīng)用了Frame組件。相比之下,LabelFrame就稍有特點(diǎn)。將上述繪圖代碼中的tk.Frame(win)改為tk.LabelFrame(win, text=f"第{i}列"),就可以得到下圖

Frame參數(shù)
由于LabelFrame比Frame多了個(gè)標(biāo)題,所以比Frame更復(fù)雜,簡(jiǎn)單起見,先介紹Frame的參數(shù)。一般Frame支持的參數(shù),LabelFrame都支持。
首先,height和width用來(lái)設(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時(shí),可接受輸入焦點(diǎn),默認(rèn)False |
| highlightbackground | 未獲得焦點(diǎn)的時(shí)候高亮邊框的顏色 |
| highlightcolor | 獲得焦點(diǎn)的時(shí)候高亮邊框的顏色 |
| 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鍵時(shí),可以看到被選中的Frame邊框變紅

LabelFrame參數(shù)
LabelFrame比Frame多了標(biāo)題,相應(yīng)多出來(lái)的參數(shù)基本都是有關(guān)文字設(shè)置的。
| 選項(xiàng) | 含義 |
|---|---|
| text | 指定本,可以包含換行符 |
| font | 文本字體 |
| foreground/fg | 文本顏色 |
| labelanchor | 文本顯示位置,默認(rèn)"nw" |
| labelwidget | 指定一個(gè)組件替代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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用python實(shí)現(xiàn).dcm格式圖像轉(zhuǎn)為.jpg格式
今天小編就為大家分享一篇利用python實(shí)現(xiàn).dcm格式圖像轉(zhuǎn)為.jpg格式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-01-01
親手教你用Python打造一款摸魚倒計(jì)時(shí)界面
前段時(shí)間在微博看到一段摸魚人的倒計(jì)時(shí)模板,感覺很有意思,于是我用了一個(gè)小時(shí)的時(shí)間寫一個(gè)頁(yè)面出來(lái),下面小編把實(shí)現(xiàn)過程分享給大家,對(duì)Python摸魚倒計(jì)時(shí)界面感興趣的朋友一起看看吧2021-12-12
Python搭建代理IP池實(shí)現(xiàn)獲取IP的方法
這篇文章主要介紹了Python搭建代理IP池實(shí)現(xiàn)獲取IP的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
詳解利用OpenCV提取圖像中的矩形區(qū)域(PPT屏幕等)
這篇文章主要介紹了詳解利用OpenCV提取圖像中的矩形區(qū)域(PPT屏幕等),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2019-07-07
pytorch 批次遍歷數(shù)據(jù)集打印數(shù)據(jù)的例子
今天小編就為大家分享一篇pytorch 批次遍歷數(shù)據(jù)集打印數(shù)據(jù)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-12-12
Python if語(yǔ)句知識(shí)點(diǎn)用法總結(jié)
本篇文章給python初學(xué)者總結(jié)了關(guān)于Python之if語(yǔ)句的相關(guān)用法以及知識(shí)點(diǎn)總結(jié),跟著學(xué)習(xí)下吧。2018-06-06
這可能是最好玩的python GUI入門實(shí)例(推薦)
這篇文章主要介紹了這可能是最好玩的python GUI入門實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

