Python Tkinter Place布局管理器及用法

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 轴向下延伸,如图所示

2-1ZF1140302452.gif

如果通过 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,则说明背景色较深,前景色使用白色;否则说明背景色较浅,前景色使用黑色。运行上面程序,可以看到如图所示的界面。

2-1Z226160204107.gif

  • 40
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Python Tkinter中的place布局是一种基于绝对位置的布局方式,它允许您将小部件放置在窗口的任何位置。使用place布局,您可以指定小部件的x和y坐标,以及它们的宽度和高度。这种布局方式非常适合创建自定义的用户界面,但需要更多的手动调整和计算。 ### 回答2: TkinterPython中最常用的GUI工具包之一,它可以创建各种图形用户界面,包括按钮、菜单、文本框、标签等等。其中,Tkinter中有三种布局方式,即pack、grid和place布局place布局是最简单、最灵活的布局方式。它允许你自由地放置组件在窗口中的任何位置。通过place布局,可以通过指定组件的坐标和尺寸,自定义布局。详细来说,place布局采用以下语法: widget.place(options) 其中,widget为需要进行布局的组件,options为可选的选项。下面是常用的选项: - x和y:指定组件的坐标位置 - width和height:指定组件的宽度和高度 - anchor:指定组件在其位置内的位置 - bordermode:指定组件的边框模式 例如,下面是用place布局创建一个简单的窗口的例子: ``` Python import tkinter as tk root = tk.Tk() label = tk.Label(root, text="Hello, Tkinter!") label.place(x=50, y=50) root.mainloop() ``` 在上面的例子中,使用place布局创建了一个标签,这个标签的位置为(50, 50)。 需要注意的是,place布局容易导致组件之间的重叠和覆盖。因此,在使用place布局时,需要仔细地指定组件的位置和尺寸,以避免出现这种问题。 综上所述,place布局是一种非常灵活的布局方式,允许我们自由地布置组件。但是,需要注意组件之间的重叠和覆盖问题。在使用place布局时,需要精心指定组件的位置和尺寸,以实现理想的布局效果。 ### 回答3: Python tkinter是一个常用的GUI界面工具包,其中place布局是一种常用的定位布局方式。place布局适用于需要定位、对齐和调整控件位置的情况,可以通过具体的坐标值来指定控件位置。下面我将从以下几个方面详细介绍Python tkinter中的place布局。 1. 布局方法 place布局可以通过以下方法来指定控件位置: 1). x和y坐标值:通过指定控件的x和y坐标值来设置控件的位置,如widget.place(x=10, y=20)。 2). relx和rely坐标值:通过指定控件相对于父容器的相对坐标值来设置控件位置,如widget.place(relx=0.5, rely=0.5)。 3). anchor参数:用于指定控件的位置锚点,如widget.place(x=10, y=20, anchor="nw"),表示从控件的左上角开始布局。 2. 布局属性 place布局还可以通过以下属性来设置控件的布局和大小: 1). width和height属性:用于设置控件的宽度和高度,如widget.place(x=10, y=20, width=100, height=50)。 2). relwidth和relheight属性:用于设置控件相对于父容器的宽度和高度比例,如widget.place(relx=0.5, rely=0.5, relwidth=0.5, relheight=0.5)。 3). bordermode属性:用于指定控件的边框模式,有inside和outside两种,如widget.place(x=10, y=20, width=100, height=50, bordermode="outside")。 3. 注意事项 在使用place布局时,需要注意以下几个问题: 1). 控件的位置和大小需要根据父容器的大小进行调整,避免超出或空缺的问题。 2). 在布局时,需要注意控件之间的间距和重叠情况,避免影响视觉效果。 3). 当控件的位置和大小需要根据窗口大小自适应时,需要使用bind方法来绑定事件,通过event.width和event.height属性来动态调整控件位置和大小。 以上就是Python tkinter中的place布局的基本情况介绍,希望对大家的学习和使用有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hakesashou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值