我是靠谱客的博主 纯真皮皮虾,最近开发中收集的这篇文章主要介绍【tkinter布局管理】place:随心所欲,自定义排列一、place简介二、运用实例三、参数方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述

文章目录

  • 一、place简介
  • 二、运用实例
    • 1. 绝对坐标和相对坐标
    • 2. 同时使用两种坐标
    • 3. 组件重叠覆盖
  • 三、参数方法
    • 1. 参数汇总
    • 2. 方法汇总


一、place简介

在tkinter中,用于管理所有组件在窗口界面布局的有三种方法:pack、grid、place

  • pack 按添加顺序排列组件
  • grid 按行列形式排列组件
  • place 能够实现自定义排列组件

前面总结 pack 布局管理器、grid 布局管理器,最后再来了解了解 place 布局管理器。

一般情况下不太常用 place ,虽然它能够实现自定义排列组件,但是使用起来要复杂一些,需要手动设置x、y坐标。

如果是整个页面布局大规模使用 place,那绝对让人崩溃级别的。
在这里插入图片描述

但在一些特殊情况,使用 place 还是非常好用滴!

在这里插入图片描述

二、运用实例

——

1. 绝对坐标和相对坐标

在 place 中,主要通过两种方式来确定各个组件的位置,一种是绝对坐标(x,y),另一种是相对坐标(relx,rely)。

import tkinter as tk
 
root = tk.Tk()

lb = tk.Label(root, text='逆旅鸭')
# 使用绝对坐标将Label放置到(50,50)位置上
lb.place(x=50, y=50, anchor='center')

bt = tk.Button(root, text='确定')
# 使用相对坐标将Label放置到父组件中间的位置上
bt.place(relx=0.5, rely=0.5, anchor='center')

root.mainloop()

运行程序,我们看看它在窗口的排列。
在这里插入图片描述
还得重点讲讲这个相对坐标,它有一个好处,看看下面的代码。

import tkinter as tk 

root = tk.Tk()

# relheight表示相对父组件的高度,relwidth表示相对父组件的宽度
tk.Label(root, bg="red").place(relx=0.5, rely=0.5, relheight=0.75, relwidth=0.75, anchor='center')
tk.Label(root, bg="yellow").place(relx=0.5, rely=0.5, relheight=0.5, relwidth=0.5, anchor='center')
tk.Label(root, bg="blue").place(relx=0.5, rely=0.5, relheight=0.25, relwidth=0.25, anchor='center')

root.mainloop()

运行程序,我们不管怎么拖动窗口的大小,其中的各个组件相对于父组件都是保持着同样比例的位置和宽高。

在这里插入图片描述
——

2. 同时使用两种坐标

如果我们针对一个组件同时使用绝对坐标和相对坐标,那这个组件的排列会是怎样的?

import tkinter as tk
 
root = tk.Tk()
root.geometry('400x400')

lb1 = tk.Label(root, text='你好鸭', fg='white', bg='green')
lb2 = tk.Label(root, text='我是逆旅鸭', fg='white', bg='red')
# 先设置相对坐标为(0.5,0.5),再使用(-100,-100)将坐标作偏移(-100,-100)
lb1.place(relx=0.5, rely=0.5, anchor='center', x=-100, y=-100)
# 先设置相对坐标为(0.5,0.5),再使用(50,50)将坐标作偏移(50,50)
lb2.place(relx=0.5, rely=0.5, anchor='center', x=50, y=50)
root.mainloop()

运行程序来看一下。
在这里插入图片描述
只需要记住,同时使用相对和绝对坐标时,相对坐标优先操作,然后是在这个相对坐标的基础上进行偏移。

——

3. 组件重叠覆盖

利用 place,我们可以实现组件与组件之间的重叠覆盖功能。

import tkinter as tk 

root = tk.Tk()

tk.Label(root, text='用户名').grid(row=0, column=0, padx=10, pady=5, sticky='w')
tk.Label(root, text='密码').grid(row=1, column=0, padx=10, pady=5, sticky='w')

tk.Entry(root).grid(row=0, column=1, padx=10, pady=5)
tk.Entry(root, show='*').grid(row=1, column=1, padx=10, pady=5)

photo = tk.PhotoImage(file='头像1.png')
tk.Label(root, image=photo).grid(row=0, column=2, rowspan=2, padx=5, pady=5)
tk.Button(text='登录').place(relx=0.8, rely=0.5)

root.mainloop()

运行程序,看我们的“登录”按钮就和图片重合在一起了。
在这里插入图片描述
在这里插入图片描述

三、参数方法

——

1. 参数汇总

下面列出布局管理器 place 所涉及的参数以及用法。
在这里插入图片描述
——

2. 方法汇总

place_configure(**options)

  • 跟 place() 一样

place_forget()

  • 将组件从屏幕中“删除”
  • 并没有销毁该组件,只是看不到了
  • 可以通过 place 或其他布局管理器显示已“删除”的组件

place_info()

  • 以字典的形式返回当前 place 的选项

place_slaves()

  • 以列表的形式返回该组件的所有子组件
  • 该方法仅适用于父组件

slaves()

  • 跟 place_slaves() 一样
    在这里插入图片描述在这里插入图片描述

最后

以上就是纯真皮皮虾为你收集整理的【tkinter布局管理】place:随心所欲,自定义排列一、place简介二、运用实例三、参数方法的全部内容,希望文章能够帮你解决【tkinter布局管理】place:随心所欲,自定义排列一、place简介二、运用实例三、参数方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部