python tkinter 布局

2018/07/11 12:06
阅读数 361

pack布局

 pack 函数默认先使用的放到上面,然后依次向下排,水平位置居中(相对父窗口)

 pack  参数 [ 参数值必须大写 ]

  side:按扭停靠在窗口的哪个位置 

   left:左 、 top: 上 、right: 右、botton:下

  fill:填充

   x:水平方向填充、y:竖直方向填充、both:水平和竖直方向填充、none:不填充

   expand:是否扩展空白区

   yes:扩展整个空白区、no:不扩展     

  anchor:位置

    N:北  下、E:东  右、S:南 下、W:西 左、CENTER:中间 

 padx: x方向的外边距

 pady: y方向的外边距

 ipadx: x方向的内边距

 ipady: y方向的内边距 

from tkinter import *
root = Tk()
Button(root,text='G').pack(anchor=E,padx=20)
root.mainloop()

 


 grid 布局

 grid 函数也支持诸如 ipadx,ipady,padx,pady,它们 的意思和 pack 函数是一样的,默认边距是 0;

 grid 布局是网格格式 ,用 row 表示行,用 column 表示列,其中值得 注意的是 row 和 column 的编号都从 0 开始

 grid 参数 

  row 表示行

  column 表示列  

  sticky:它决定了这个组件是从哪个方向开始的

    N:北 上、E:东 右、S:南 下、W:西 左

  rowspan :  跨越(合并)的行数

  columnspan:  跨越(合并)的列数

from tkinter import *

tk=Tk()
var=IntVar()

#标签控件,显示文本和位图,展示在第一行
Label(tk,text="First").grid(row=0,sticky=E)#靠右
Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左

#输入控件
Entry(tk).grid(row=0,column=1,padx=10,pady=10)
Entry(tk).grid(row=1,column=1)

#多选框插件
button=Checkbutton(tk,text="Precerve aspect",variable=var)
button.grid(row=2,columnspan=2,sticky=W)

#插入图片
photo=PhotoImage(file="wm.png")
label=Label(image=photo)
label.grid(row=0,column=2,rowspan=2,columnspan=2,
           sticky=W+E+N+S, padx=5, pady=5)#合并两行,两列,居中,四周外延5个长度

#按钮控件
button1=Button(tk,text="Zoom in")
button1.grid(row=2,column=2)
button2=Button(tk,text="Zoom out")
button2.grid(row=2,column=3)


#主事件循环
mainloop()

 


 

place 布局

  place 最简单最灵活的一种布局,使用组件坐标来放置组件的位置。但是不太推荐使用,在不同分辨率下,界面往往有较大差异。  

  place 参数   

anchor:位置,默认值为 NW 同pack布局 

x、y: 组件左上角的x、y坐标 整数,默认值0 绝对位置坐标,单位像素

relx、rely :组件相对于父容器的x、y坐标 0~1之间浮点数 相对位置,0.0表示左边缘(或上边缘),1.0表示右边缘(或下边缘)

width、height :组件的宽度、高度 非负整数 单位像素

relwidth、relheight :组件相对于父容器的宽度、高度 0~1之间浮点数 与relx(rely)取值相似

bordermode: 如果设置为INSIDE,组件内部的大小和位置是相对的,不包括边框;如果是OUTSIDE,组件的外部大小是相对的,包括边框 INSIDE、OUTSIDE(默认值INSIDE) 可以使用常量INSIDE、OUTSIDE,也可以使用字符串形式”inside”、”outside”

from tkinter import *
root = Tk()
Button(root,text='G').place(x=20,y=30,width=30,height=40,bordermode=INSIDE)
root.mainloop()

 

 相关文章:Python GUI之tkinter布局管理

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部