程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python tkinter - 第7章 框架控件(Frame 與 LabelFrame)

編輯:Python

第7章 框架控件(Frame 與 LabelFrame)
框架控件(Frame和LabelFrame),在屏幕上創建一塊矩形區域,多作為容器來布局其他控件,比如標簽、按鈕、輸入框等,都可用框架來布局。框架控件一般在布局很復雜的情況下使用,尤其是有很多控件需要使用的時候。可以把框架控件當成一種容器,裡面可以存儲各種控件。想象一下家裡面衣櫃的隔斷或者架子,可以把不同衣物很好的歸類放置,框架控件的作用就是這個效果。如果沒有框架控件,很多復雜的布局難以完成或實現。

7.1 屬性列表
具體屬性列表如下:

屬性描述background
bg框架控件的背景顏色。默認是系統指定顏色borderwidth
bd框架控件的邊框寬度。一般是0個像素值,就是無邊框。class給框架框架指定一個class名稱。colormap指定colormap,一般使用在256色情況下。container默認值是False。如果為True則不能創建子控件cursor當鼠標移動經過框架的時候,顯示的光標樣式。height設置框架的高度。highlightbackground當框架失去焦點的時候,邊框的背景顏色highlightcolor當框架獲得焦點的時候,邊框的高亮顏色highlightthickness設置當框架獲得或者失去焦點的時候,高亮邊框的寬度padx在水平方向上的內邊距pady在垂直方向上的內邊距relief邊框的美化效果。默認值是FLAT,其他的可選項包括:SUNKEN, RAISED, GROOVE, 和 RIDGEtakefocus設置是否能夠使用Tab鍵移動焦點到框架控件上。visual用何種方式來顯示框架控件,取值為best, directcolor, grayscale, greyscale, pseudocolor, staticcolor, staticgray, staticgrey, truecolor, 或者default。不過除了best,truecolor以及default,其他取值已經不適用了。width設置框架的寬度。參考height屬性

7.1.1 background(bg)
background 的屬性是用來設置框架框架的背景顏色的。bg是縮寫。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1 = tk.Frame(root,bg='blue',width=100,height=100)
b1.pack()
root.mainloop()

結果:

框架控件就是在屏幕上創建一塊矩形區域,用來容納其它的控件。
7.1.2 borderwidth(bd)
borderwidth定義框架控件的邊框寬度。bd是縮寫形式。默認的邊框寬度是0。可以通過設置該屬性調整邊框的寬度。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1 = tk.Frame(root,bg='blue',bd=3)
b1.pack()
b2=tk.Entry(b1,width=20)
b2.pack()
root.mainloop()

結果:

說明:輸入框邊上的藍色部分就是設置了邊框之後的效果。如果沒有設置邊框的話,是沒有藍色部分的。
7.1.3 class
給框架控件指定一個class名稱。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1 = tk.Frame(root,bg='blue',bd=3,class_='good')
b1.pack()
b2=tk.Entry(b1,width=20)
b2.pack()
root.mainloop()

說明:因為class是Python的關鍵字,所以在這裡要加上一個下劃線’_’。
7.1.4 colormap
指定顏色映射。有些顯示器只支持256種顏色(有些甚至更少)。這種顯示通常提供一個顏色映射來指定使用哪256種顏色。此選項允許您指定用於此幀的顏色映射及其子部件。
默認情況下,一個新框架使用與其父相同的顏色映射。使用此選項,您可以重用另一個窗口的顏色映射(此窗口必須位於同一個屏幕上,且具有相同的視覺特性)。創建框架後,不能更改此選項。
7.1.5 container
container = True 的時候,不能在其中創建子控件。False的時候可以。如果為true,則此frame是容器小部件。默認為false。
7.1.6 cursor
鼠標經過框架控件時的形狀,更多的信息見3.3.6節。
7.1.7 height 和width
設置框架控件的高和寬,單位是像素。不過如果有子控件,系統會根據子控件的大小來自動計算框架控件的大小,height和width屬性就沒有用了。

7.1.8 highlightbackground,highlightcolor和highlightthickness
這三個屬性是配合使用的。highlightbackground是框架控件沒有獲得輸入焦點時的邊框顏色。如圖一所示。highlightcolor是框架控件獲得輸入焦點時候的邊框顏色。如圖二所示。highlightthickness定義了邊框的寬度。如果不定義這個邊框的寬度,那麼就不會顯示highlightbackground和highlightcolor定義的顏,因為highlightthickness默認值是0。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1 = tk.Frame(root,bg='blue',width=100,height=100,
highlightbackground='red',
highlightcolor='green',
highlightthickness=5,takefocus=1)
b1.pack()
b2=tk.Entry(root)
b2.pack()
root.mainloop()

結果:


7.1.9 padx和pady
設置框架控件的內邊距。見前面章節的描述。
7.1.10 relief
設置邊框的效果。具體的說明見3.3.5節。如果不定義borderwidth,則沒有relief沒有任何的效果。也就是說relief是對邊框的美化效果,邊框的寬度為0,那麼relief自然就沒有任何作用。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1 = tk.Frame(root,bg='blue',border=10,width=100,
height=100,relief=tk.GROOVE)
b1.pack()
root.mainloop()

結果:

7.1.11 takefocus
這個屬性是設置框架控件能夠獲得輸入焦點。takefocus=True表示可以獲得輸入焦點,takefocus=False表示不可以。默認值是False。

7.1.12 visual
定義如何顯示框架。取值為:
best, directcolor, grayscale, greyscale, pseudocolor, staticcolor, staticgray, staticgrey, truecolor, 和default
不過很多的取值是針對過去低端的顯示設備。目前只有best,truecolor和default還可以取值。其他的取值為產生異常。

7.2 LabelFrame(標簽框架控件)
LabelFrame標簽框架控件,比Frame框架控件多了一個標簽,可以提示放置在框架內的子控件的用途。
標簽框架控件比框架控件多了5個屬性,都是跟標簽有關的。

屬性描述font定義標簽的字體forground定義標簽的前景(文本)顏色text設置標簽中顯示的文本labelanchor設置標簽的位置labelwidget設置標簽位置的控件。除了默認的標簽外,還可以使用其他控件7.2.1 text定義標簽中的文本。此文本可以動態修改。
import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1 = tk.LabelFrame(root,width=100,height=100,
text='標簽',padx=10,pady=10)
b1.pack()
b2=tk.Entry(b1)
b2.pack()
root.mainloop()

結果:

7.2.2 font
設置標簽中文本的字體,只能設置一種字體。詳細的說明見3.3.3節。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1 = tk.LabelFrame(root,width=100,height=100,
text='標簽',padx=10,pady=10,
font=('times',20,'bold'))
b1.pack()
b2=tk.Entry(b1)
b2.pack()
root.mainloop()

結果:

7.2.3 foreground
設置標簽中的前景(文本)顏色。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1 = tk.LabelFrame(root,width=100,height=100,
text='標簽',padx=10,pady=10,
foreground='red')
b1.pack()
b2=tk.Entry(b1)
b2.pack()
root.mainloop()

結果:

7.2.4 labelanchor
設置在何處顯示標簽。有12個位置:e, en, es, n, ne, nw, s, se, sw, w, wn, 和 ws。就是按照東南西北的方位組合,東南西北的定義遵循地圖的定義,就是左東右西,上北下南。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1 = tk.LabelFrame(root,width=100,height=100,text='標簽位置:e',padx=10,pady=30,labelanchor='e')
b1.pack()
b2=tk.Entry(b1)
b2.pack()
root.mainloop()

結果:

7.2.5 labelwidget
默認的情況下,使用的是標簽控件來顯示提示信息。但是也可以替換成其他的控件,比如按鈕、輸入框等。使用的方法是先定義一個控件,然後賦值給labelwidget就可以了。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b3=tk.Button(root,text='按鈕')
b1 = tk.LabelFrame(root,width=100,
height=100,labelwidget=b3)
b1.pack()
b2=tk.Entry(b1)
b2.pack()
root.mainloop()

結果:


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved