1、Frame的基本属性
# -*- encoding=utf-8 -*- import tkinter from tkinter import * if __name__ == '__main__': win = tkinter.Tk() # 窗口 win.title('南风丶轻语') # 标题 screenwidth = win.winfo_screenwidth() # 屏幕宽度 screenheight = win.winfo_screenheight() # 屏幕高度 width = 500 height = 400 x = int((screenwidth - width) / 2) y = int((screenheight - height) / 2) win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) # 大小以及位置 frame = Frame( master=win, # 父容器 bg='yellow', # 背景颜色 relief='groove', # 边框的3D样式 flat、sunken、raised、groove、ridge、solid。 bd=3, # 边框的大小 height=100, # 高度 width=100, # 宽度 padx=1, # 内间距,字体与边框的X距离 pady=1, # 内间距,字体与边框的Y距离 cursor='circle', # 鼠标移动时样式 arrow, circle, cross, plus... ) frame.pack() win.mainloop()
2、不同的Frame使用不同的布局
# -*- encoding=utf-8 -*- import tkinter from tkinter import * if __name__ == '__main__': pass w = tkinter.Tk() # 窗口 w.title('测试') # 标题 w.geometry('200x100+30+30') # 大小以及位置 frame = Frame() # 定义容器 Button( master=frame, # 父容器为frame text='容器1上的按钮', # 文本 ).pack() frame2 = Frame() # 定义容器 Button( master=frame2, # 父容器为frame2 text='容器2上的按钮', # 文本 ).grid(row=0, column=0) Label(frame2, text='容器2上的Lable', bg='yellow', fg='pink').grid(row=0, column=1) frame.pack() frame2.pack() w.mainloop()
3、容器自适应
备注:
①设置容器Frame的高度和宽度好,可以看到同大小的Frame,但是在Frame上添加组件,Frame就自适应了,width和height就失效了。
# -*- encoding=utf-8 -*- import tkinter from tkinter import * if __name__ == '__main__': win = tkinter.Tk() # 窗口 win.title('南风丶轻语') # 标题 screenwidth = win.winfo_screenwidth() # 屏幕宽度 screenheight = win.winfo_screenheight() # 屏幕高度 width = 500 height = 400 x = int((screenwidth - width) / 2) y = int((screenheight - height) / 2) win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) # 大小以及位置 frame1 = Frame( master=win, # 父容器 bg='yellow', # 背景颜色 relief='groove', # 边框的3D样式 flat、sunken、raised、groove、ridge、solid。 bd=3, # 边框的大小 height=100, # 高度 width=100, # 宽度 padx=1, # 内间距,字体与边框的X距离 pady=1, # 内间距,字体与边框的Y距离 cursor='circle', # 鼠标移动时样式 arrow, circle, cross, plus... ) frame1.pack() frame1 = Frame( master=win, # 父容器 bg='yellow', # 背景颜色 relief='groove', # 边框的3D样式 flat、sunken、raised、groove、ridge、solid。 bd=3, # 边框的大小 height=100, # 高度 width=100, # 宽度 padx=1, # 内间距,字体与边框的X距离 pady=1, # 内间距,字体与边框的Y距离 cursor='circle', # 鼠标移动时样式 arrow, circle, cross, plus... ) frame1.pack() # 不放置组件在frame上,width和height都生效,放置组件后,自适应组件大小了 Label(frame1, text='标签', width=3, height=1).pack(side=TOP) Button(frame1, text='按钮', ).pack(side=TOP) frame2 = Frame(relief='g', bg='red') frame2.pack() Label(frame2, text='标签', ).grid(row=0, column=0) Button(frame2, text='按钮', ).grid(row=0, column=1) win.mainloop()