python?tkinter中的Frame控件用法詳解
Frame和LabelFrame控件
對于一個稍微復(fù)雜的軟件,界面上肯定會劃分多個功能區(qū),每個功能區(qū)內(nèi)部又有一些子功能區(qū),如果直接用按鈕在窗口中亂排,那么軟件的設(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)其實看不太出來應(yīng)用了Frame組件。相比之下,LabelFrame就稍有特點。將上述繪圖代碼中的tk.Frame(win)改為tk.LabelFrame(win, text=f"第{i}列"),就可以得到下圖
Frame參數(shù)
由于LabelFrame比Frame多了個標題,所以比Frame更復(fù)雜,簡單起見,先介紹Frame的參數(shù)。一般Frame支持的參數(shù),LabelFrame都支持。
首先,height和width用來設(shè)置寬度和高度;padx和pady用于設(shè)置水平和垂直方向上的邊距。下面的表中給出了一些有關(guān)Frame邊框的配色設(shè)置
選項 | 含義 |
---|---|
background/bg | 設(shè)置背景顏色,默認值由系統(tǒng)指定 |
borderwidth/bd | 指定的邊框?qū)挾龋J2像素 |
takefocus | 設(shè)為True時,可接受輸入焦點,默認False |
highlightbackground | 未獲得焦點的時候高亮邊框的顏色 |
highlightcolor | 獲得焦點的時候高亮邊框的顏色 |
highlightthickness | 指定高亮邊框的寬度,默認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多了標題,相應(yīng)多出來的參數(shù)基本都是有關(guān)文字設(shè)置的。
選項 | 含義 |
---|---|
text | 指定本,可以包含換行符 |
font | 文本字體 |
foreground/fg | 文本顏色 |
labelanchor | 文本顯示位置,默認"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實現(xiàn).dcm格式圖像轉(zhuǎn)為.jpg格式
今天小編就為大家分享一篇利用python實現(xiàn).dcm格式圖像轉(zhuǎn)為.jpg格式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01詳解利用OpenCV提取圖像中的矩形區(qū)域(PPT屏幕等)
這篇文章主要介紹了詳解利用OpenCV提取圖像中的矩形區(qū)域(PPT屏幕等),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-07-07pytorch 批次遍歷數(shù)據(jù)集打印數(shù)據(jù)的例子
今天小編就為大家分享一篇pytorch 批次遍歷數(shù)據(jù)集打印數(shù)據(jù)的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12