美文网首页
tkinter 布局

tkinter 布局

作者: 三千焱炎火丶 | 来源:发表于2018-08-26 14:56 被阅读0次

总结 tkinter 三种布局的基本用法。

由于是第一次尝试 tkinter,如果有错误还请大家指出

place

最容易理解,使用最麻烦的布局。

通过指定控件的绝对位置(或于父控件的相对位置)来布局

所有的控件都可以使用.place(x, y)来放置(x 和 y 是控件左上角的位置,其中参数widthheight 是可选的)

Example(绝对布局): 使用 x, y, height, width 直接指定位置和宽高

from tkinter import *

root = Tk()
# 在 root 面板上创造一个 label 控件,内容为“学号”,字体大小为 20
label1 = Label(root, text='学号:', font=20)
# 将这个 label 控件放于距离左边和上面都是 50 的位置
label1.place(x=50, y=50)
root.mainloop()

Example(相对布局): 使用 relx, rely, relheight, relwidth 指定相对比例的宽高

from tkinter import *

root = Tk()
label1 = Label(root, text='学号:', font=20)
# 以控件的最右(EAST)为基准,将控件放在水平方向最右,竖直方向中间的位置
label1.place(relx=1.0, rely=0.5, anchor=E)
root.mainloop()

效果

1.png 2.png

pack

最常用的布局,不需要指定具体位置,而是使用 RIGHT LEFT TOP BOTTOM 来放置新的控件,

由于是一个个连续放置的。因此,可以通过设置控件边距来实现复杂的效果。

Example(从右往左连续放置)

from tkinter import *

root = Tk()
# 生成一个 400 * 150 大小的窗口
root.geometry("400x150")
# 生成五个 label 内容分别是 1,2,3,4,5 字体颜色是白色的
label1 = Label(root, text='1', fg="white", bg="#557097", height=3, width=6)
label2 = Label(root, text='2', fg="white", bg="#610814", height=3, width=6)
label3 = Label(root, text='3', fg="white", bg="#030c2d", height=3, width=6)
label4 = Label(root, text='4', fg="white", bg="#a9a9a9", height=3, width=6)
label5 = Label(root, text='5', fg="white", bg="#6a3906", height=3, width=6)
# 将这5个label全部从右往左放在root中
label1.pack(side=RIGHT)
label2.pack(side=RIGHT)
label3.pack(side=RIGHT)
label4.pack(side=RIGHT)
label5.pack(side=RIGHT)
root.mainloop()

效果

3.png

Example(使用 fill,内边距和外边距)

label1.pack(side=RIGHT)
label2.pack(side=RIGHT, fill=Y) # 2号块 填充Y轴
label3.pack(side=RIGHT, padx=20) # 3号块 X轴上外边距20
label4.pack(side=RIGHT, ipadx=20) # 4号块 X轴上内边距20
label5.pack(side=RIGHT)

效果

4.png

grid

Grid 相比于 pack 在很多场景下有着不可替代的作用,例如计算器、相册。通常用来呈现方格块的布局。

相比于 Pack 的单方向流式布局,Grid 使用一个行列结构来定位每一个元素

相比于 Place 的固定位置,Grid 可以使用内外边距

Example(3x3)

from tkinter import *

root = Tk()
# 生成9个格子
for i in range(9):
    # 设置每个格子的背景颜色和字体属性
    if i % 2 == 0:
        font_color = "white"
        background_color = "#d1d1d1"
    else:
        font_color = "black"
        background_color = "#fafafa"
    label = Label(root, text=str(i + 1), fg=font_color, bg=background_color, height=5, width=7)
    # 将格子放在合适的位置
    label.grid(row=i // 3, column=i % 3)
root.mainloop()

效果

5.png

参考资料

python之Tkinter控件学习
Tkinter 教程12 布局管理 (Pack Place Grid)

相关文章

  • 2019-02-07Tkinter -- Grid布局

    Tkinter -- Grid布局 from Tkinter import * root = Tk() Label...

  • [译][Tkinter 教程12] 布局管理 (Pack Pla

    原系列地址: Python Tkinter 简介: 本文讲述如何使用 tkinter 的布局管理 (被称作 lay...

  • tkinter 布局

    总结 tkinter 三种布局的基本用法。 由于是第一次尝试 tkinter,如果有错误还请大家指出 place ...

  • Tkinter 布局

    故事: 在Tkinter 布局的时候,使用grid 可以很好的控制部件在哪一行哪一列。但是部件不会自动跟着窗口的大...

  • 可视化wxPython GUI构建工具wxFormBuilder

    1、采用python tkinter手工代码布局GUI界面的烦恼 tkinter是python自带的GUI工具包接...

  • Tkinter grid布局

    Tkinter参考中最推荐使用的一个布局器。实现机制是将Widget逻辑上分割成表格,在指定的位置放置想要的Wid...

  • tkinter 布局管理

    1 布局管理器 布局管理器是负责管理各组件的大小和位置的。此外,当用户调整窗口大小后,布局管理器还会自动调整窗口中...

  • python3 图形界面编程

    tkinter 布局管理器:pack/grid/place 事件绑定:x.bind QT

  • Python GUI layout基础

    Python tkinter中的布局有1.place2.pack3.grid分别是绝对,流式和网格布局。 Plac...

  • Tkinter之组件布局和事件绑定

    原文博客地址: Tkinter之组件布局和事件绑定 前面的一些文章介绍了Tkinter模块和大部分组建的使用 这里...

网友评论

      本文标题:tkinter 布局

      本文链接:https://www.haomeiwen.com/subject/cbjoiftx.html