用Tkinter打造GUI开发工具(13)Tkinter小部件的place布局

用Tkinter打造GUI开发工具(13)Tkinter小部件的place布局
place布局管理可以显式的指定小部件的绝对位置或相对于其它部件的位置。要使用 Place布局, 调用相应控件的 place() 方法就可以了。 所有 Tkinter 的标准部件都可以调用 place()。
使用place()显示一个小部件w,其语法格式如下。

w.place(option=value, ...)    

w.place(option=value, …)
place()部件放置方法参数option见下表.

参数 说明
anchor 部件的对齐方式,顶对齐N,底对齐S,左对齐W,右对齐E。值为:N,NE,E,SE,S,SW,W,NW,CENTER。
x 部件左上角的x坐标。
y 部件左上角的y坐标。
relx 部件左上角相对于窗口的x坐标,应为0-1之间的小数。
rely 部件左上角相对于窗口的y坐标,应为0-1之间的小数。
width 部件的宽度。
height 部件的高度。
relwidth 部件相对于窗口的宽度,0-1之间的小数,图形宽度相对窗口变化。
relheight 部件相对于窗口的高度,0-1之间的小数,图形高度相对窗口变化。

使用place()函数,它分为绝对布局和相对布局,绝对布局使用 x 和 y 参数,相对布局使用 relx,rely,relheight 和 relwidth 参数。
如果窗口是固定大小的,可以使用place()函数,否则窗口大小改变后,就不好看了。
不过place()可以与pack()或grid()布局方法混用。因此使用palce()方法布局的控件可以叠加。
请看下面一个示例程序。通过Label部件通过place()方法叠加,产生渐变蓝色背景。

# -*- coding: utf-8 -*-
import  tkinter  as  tk

root=tk.Tk()  #闯将 Tk主窗口 
root.geometry('{}x{}'.format(500,256))  #改变窗口大小

for i in range(256):
    l=tk.Label(root,text="", relief=tk.RIDGE,bg='#%02x%02x%02x'%(0,0,255-i),width=300)
    l.place(x=0,y=i)

l=tk.Label(root,text="超越!是我们的每一步!")
l.place(x=200,y=100)

root.mainloop() #开启Tkinter主循环

程序运行结果见下图。
在这里插入图片描述
Tkinter的Place类,除了place()方法外,还提供有以下几个方法。
place_slaves() 以列表方式返回本部件的所有子部件对象。
place_configure(option=value) 给place布局管理器设置属性,使用属性(option)= 取值(value)方式设置。
propagate(boolean)置为True表示父部件的几何大小由子部件决定(默认值),反之则无关。
place_info() 返回pack提供的选项所对应得值。
place _forget() place _forget部件,将部件隐藏并且忽略原有设置,对象依旧存在,可以用place (option, …),将其显示。
location(x, y) x, y为以像素为单位的点,函数返回此点是否在单元格中,在哪个单元格中。返回单元格行列坐标,(-1, -1)表示不在其中。
size() 返回部件所包含的单元格,揭示部件大小。

发布了56 篇原创文章 · 获赞 67 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/hepu8/article/details/89527416