这是一个容器控件,当我们设计GUI和复杂的时候,可以用考虑将一系列的Weight组织在一个框架内,这样会方便管理。
格式:Frame(父对象,options…)
options:下面总结一部分常用的。
示例1:
from tkinter import *
root = Tk()
root.title("Frame")
# 遍历RGB三种颜色,并创建Frame控件,赋值背景色
fms = {'red':'cross','green':'boat','blue':'clock'}
for fmColor in fms:
Frame(root,bg = fmColor,cursor = fms[fmColor],height = 50,width = 200).pack(side = LEFT)
root.mainloop()
运行:
示例2:在框架上添加Widget控件
A = Frame(root, options…) # 传回框架对象A
btn = Button(A, …) # 框架对象A是btn功能按钮上的父容器
from tkinter import* root=Tk() root.title("Add widget control in frame") # 创建上Frame frameUpper=Frame(root,bg="lightyellow") frameUpper.pack() # 将三个按钮分别添加到上面的Frame上 btnRed=Button(frameUpper,text="Red",fg="red") btnRed.pack(side=LEFT,padx=5,pady=5) btnGreen=Button(frameUpper,text="Green",fg="green") btnGreen.pack(side=LEFT,padx=5,pady=5) btnBlue=Button(frameUpper,text="Blue",fg="blue") btnBlue.pack(side=LEFT,padx=5,pady=5) # 创建下Frame frameLower=Frame(root,bg="lightblue") frameLower.pack() # 将按钮添加到下Frame btnPurple=Button(frameLower,text="Purple",fg="purple") btnPurple.pack(side=LEFT,padx=5,pady=5) root.mainloop()
运行:
LabelFrame(父容器,options…)
其中options的包含主要的:
示例1:将标签框架应用与复选框
from tkinter import*
# 遍历checkboxes数组,并打印所有状态为true的元组
def printInfo():
selection=''
for i in checkboxes:
if checkboxes[i].get()==True:
selection=selection+sports[i]+"\t"
print(selection)
root=Tk()
root.title("LabelFrame add checkboxs")
root.geometry("400x220")
labFrame=LabelFrame(root,text="选择你最喜欢的运动项目")
sports={0:"足球",1:"棒球",2:"篮球",3:"网球"}
checkboxes={}
for i in range(len(sports)):
checkboxes[i]=BooleanVar()
# 创建CheckBox复选框,父容器为 LabelFrame
Checkbutton(labFrame,text=sports[i],variable=checkboxes[i]).grid(row=i+1,sticky=W)
labFrame.pack(ipadx=5,ipady=5,pady=10)
# 创建一个button,绑定事件为 printInfo
btn=Button(root,text="确定",width=10,command=printInfo)
btn.pack()
root.mainloop()
运行:
与Frame类似,但是TopLevel产生的是一个独立的窗体。关闭TopLevel窗口,原窗口可以继续使用,但是如果关闭了原窗口,TopLevel窗口则会自动关闭。
from tkinter import * import random root=Tk() root.title("TopLevel") msgYes,msgNo,msgExit=1,2,3 def MessageBox(): msgType=random.randint(1,3) if msgType==msgYes: labTxt='YES' elif msgType==msgNo: labTxt='NO' elif msgType==msgExit: labTxt='Exit' # 创建Toplevel窗体 tl=Toplevel() tl.geometry("300x180") tl.title("MessageBox") # 打印Label标签到MessageBox上 Label(tl,text=labTxt).pack(fill=BOTH,expand=True) btn=Button(root,text='Click me',command=MessageBox) btn.pack() root.mainloop()
运行:
联系客服