Place 布局就是其他 GUI 编程中的“绝对布局”,这种布局方式要求程序显式指定每个组件的绝对位置或相对于其他组件的位置。

如果要使用 Place 布局,调用相应组件的 place() 方法即可。在使用该方法时同样支持一些详细的选项,关于这些选项的介绍如下:

x:指定组件的 X 坐标。x 为 0 代表位于最左边。

y:指定组件的 Y 坐标。y 为 0 代表位于最右边。

relx:指定组件的 X 坐标,以父容器总宽度为单位 1,该值应该在 0.0~1.0 之间,其中 0.0 代表位于窗口最左边,1.0 代表位于窗口最右边,0.5 代表位于窗口中间。

rely:指定组件的 Y 坐标,以父容器总高度为单位 1,该值应该在 0.0~1.0 之间,其中 0.0 代表位于窗口最上边,1.0 代表位于窗口最下边,0.5 代表位于窗口中间。

width:指定组件的宽度,以 pixel 为单位。

height:指定组件的高度,以 pixel 为单位。

relwidth:指定组件的宽度,以父容器总宽度为单位 1,该值应该在 0.0~1.0 之间,其中 1.0 代表整个窗口宽度,0.5 代表窗口的一半宽度。

relheight:指定组件的高度,以父容器总高度为单位 1,该值应该在 0.0~1.0 之间,其中 1.0 代表整个窗口高度,0.5 代表窗口的一半高度。

bordermode:该属性支持“inside”或“outside” 属性值,用于指定当设置组件的宽度、高度时是否计算该组件的边框宽度。

当使用 Place 布局管理容器中的组件时,需要设置组件的 x、y 或 relx、rely 选项,Tkinter 容器内的坐标系统的原点 (0,0) 在左上角,其中 X 轴向右延伸,Y 轴向下延伸,如图所示

如果通过 x、y 指定坐标,单位就是 pixel(像素);如果通过 relx、rely 指定坐标,则以整个父容器的宽度、高度为 1。不管通过哪种方式指定坐标,通过图 1 不难发现,通过 x 指定的坐标值越大,该组件就越靠右;通过 y 指定的坐标值越大,该组件就越靠下。

下面介绍一个使用 Place 进行布局的例子,该示例将会动态计算各 Label 的大小和位置,并通过 place() 方法设置各 Label 的大小和位置。# Python 2.x使用这行

#from Tkinter import *

# Python 3.x使用这行

from tkinter import *

import random

class App:

def __init__(self, master):

self.master = master

self.initWidgets()

def initWidgets(self):

# 定义字符串元组

books = ('疯狂Python讲义', '疯狂Swift讲义', '疯狂Kotlin讲义',\

'疯狂Java讲义', '疯狂Ruby讲义')

for i in range(len(books)):

# 生成3个随机数

ct = [random.randrange(256) for x in range(3)]

grayness = int(round(0.299*ct[0] + 0.587*ct[1] + 0.114*ct[2]))

# 将元组中3个随机数格式化成16进制数,转成颜色格式

bg_color = "#%02x%02x%02x" % tuple(ct)

# 创建Label,设置背景色和前景色

lb = Label(root,

text=books[i],

fg = 'White' if grayness < 120 else 'Black',

bg = bg_color)

# 使用place()设置该Label的大小和位置

lb.place(x = 20, y = 36 + i*36, width=180, height=30)

root = Tk()

root.title("Place布局")

# 设置窗口的大小和位置

# width x height + x_offset + y_offset

root.geometry("250x250+30+30")

App(root)

root.mainloop()

上面程序中第 26 行代码就是调用 place() 方法执行 Place 布局的关键代码。在调用 place() 方法时主要设置了 x(X 坐标)、y(Y 坐标)、width(宽度)、height(高度)这四个选项,通过这四个边项即可控制各 Label 的位置和大小。

为了增加一些趣味性,上面程序使用随机数计算了 Label 组件的背景色,并根据背景色的灰度值来计算 Label 组件的前景色:如果 grayness 小于 125,则说明背景色较深,前景色使用白色;否则说明背景色较浅,前景色使用黑色。运行上面程序,可以看到如图所示的界面。

python tkinter 布局_Python Tkinter Place布局管理器及用法相关推荐

  1. python异步框架twisted_详解Python的Twisted框架中reactor事件管理器的用法

    铺垫在大量的实践中,似乎我们总是通过类似的方式来使用异步编程: 监听事件 事件发生执行对应的回调函数 回调完成(可能产生新的事件添加进监听队列) 回到1,监听事件 因此我们将这样的异步模式称为Reac ...

  2. 【Android 安装包优化】Tint 着色器 ( 简介 | 布局文件中的 Tint 着色器基本用法 | 代码中使用 Tint 着色器添加颜色效果 )

    文章目录 一.Tint 着色器简介 二.布局文件中的 Tint 着色器基本用法 三.代码中使用 Tint 着色器添加颜色效果 四.参考资料 一.Tint 着色器简介 Tint 着色器的作用是是 可以使 ...

  3. python的上下文管理用哪个关键字_正确理解python中的关键字“with”与上下文管理器...

    正确理解python中的关键字"with"与上下文管理器 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  正确理解python中的关键字&quo ...

  4. rpm包管理器常见用法

    rpm包管理器常见用法 rpm包安装过程 安装包rpm -ivh 安装相互依赖的rpm 更新包rpm -Uvh 卸载包rpm -evh 卸载软件但不卸载依赖包 查询包 查询文件属于哪个包rpm -qf ...

  5. dnf包管理器常见用法

    dnf包管理器常见用法 DNF包管理器简介 从指定软件仓安装指定软件 更新软件包到最新的稳定发行版 dnf distro-sync 回滚某个特定软件的版本dnf downgrade DNF包管理器简介 ...

  6. yum包管理器常见用法

    yum包管理器常见用法 yum包管理器常用命令 yum源数据结构 自动寻找最快的yum源--仅支持Centos7 yum源配置 保留yum安装过的包 `yum-config-manager`快速添加` ...

  7. python place布局_Python TKinter布局管理Place()Grid Pack详解

    Tkinter是Python标准GUI工具包,有三种布局管理方式: pack grid place 这三种布局管理在同一个 master window 里是不可以混用的. 下面通过三示例,详解使用参数 ...

  8. python tkinter 布局_python tkinter组件摆放方式详解

    1.最小界面组成 # 导入tkinter模块 import tkinter # 创建主窗口对象 root = tkinter.Tk() # 设置窗口大小(最小值:像素) root.minsize(30 ...

  9. python tkinter输入框_python TKinter获取文本框内容的方法

    python TKinter获取文本框内容的方法 更新时间:2018年10月11日 11:36:08 作者:biubiuzzz 今天小编就为大家分享一篇python TKinter获取文本框内容的方法 ...

  10. python tkinter实例_Python tkinter模版代码实例

    这篇文章主要介绍了Python tkinter模版代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 import tkinter i ...

最新文章

  1. 6 OC 中的isa 指针
  2. 同步控制 之“重入锁”
  3. 轻松搞定javascript变量(闭包,预解析机制,变量在内存的分配 )
  4. 计算机类高职院校课题,高职院校公共计算机类课程体系构建的教改研究
  5. 嵌入式Linux基础学习笔记-文件IO编程-I/O多路复用
  6. 计算机课实验三,成都信息工程学院计算机网络课程实验三
  7. 退出页面删除cookie_Cookie 机制
  8. 每日一题(6)—— sizeof用法
  9. SpringBoot—整合log4j2入门和log4j2.xml配置详解
  10. 在vSAN中存储ESXi核心转储和暂存分区(2074026)
  11. 亚马逊云基础架构:一场从未停歇的技术创新革命
  12. 事关Animation Tree的工作随笔(一)
  13. layui 监听表单提交form.on(‘submit(sub)‘,function (){}) ajax请求失败问题
  14. 移动先行之谁主沉浮? 带着你的Net飞奔吧!
  15. 1、BimRevit 二次开发配置和环境搭建
  16. Safe3 Web漏洞扫描系统 6.1修正版(蜘蛛爬行)
  17. 《Kotlin极简教程》第1章 Kotlin简介
  18. WPA3也不安全啦?WPA3-R3 H2E了解一下
  19. Multisim3.8应用实例
  20. 2Opinion Word Expansion and Target Extraction through Double Propagation(2020-10-18)

热门文章

  1. 【动画消消乐|CSS】086.炫酷水波浪Loading过渡动画
  2. es6中reduce的用法_es6中reduce的基本使用方法
  3. Docker(精简版)
  4. 苹果IPAD的使用心得
  5. hadoop单机及完全分布式集群的安装
  6. Java 注解操作大全。2019最牛操作!!!
  7. Spark交集/差集/并集/拉链
  8. Android packages Android常见APP对应包名
  9. 【CodeForces Round #550】A-F | 模拟 | 贪心 | 高精 | BFS | 二分图 | E
  10. 记一次寒假小尝试心得体会