Python Tkinter教程(三)——三种几何布局管理器Pack、Place和Grid的所有参数及相关方法及详细用法

简介: Python Tkinter教程(三)——三种几何布局管理器Pack、Place和Grid的所有参数及相关方法及详细用法

一、Pack方法

【Pack方法官方原文:pack manual page - Tk Built-In Commands

【参数说明】f198d7cc86d8487fa240cedc481d7689.pngimage.png【1】如果容器窗口太大,以至于在其所有内容pack后会留下额外的空间,那么额外的空间将均匀分布在为其设置了-expand选项的所有内容中。

【相关方法】image.png【几何传播】Pack通常会计算一个容器控件(如Frame控件)必须有多大才能完全满足其内容物的需要,并将容器控件的宽度和高度设置为这些尺寸。这会导致几何信息通过窗口层次向上传播到顶层窗口(Toplevel类型的控件),以便整个子树自行调整大小以满足叶窗口的需要。但是,pack_propagate命令可用于关闭一个或多个容器控件的传播。如果传播被禁用,则Pack几何布局管理器将不会设置pack所需的宽度和高度。例如,如果希望容器控件具有指定的固定大小,这可能很有用。


【这里推荐一篇写的很好的关于Pack的文章】


用tkinter.pack设计复杂界面布局_快乐清风客的博客-CSDN博客_tkinter界面设计


【代码示例】

from tkinter import *
root = Tk()
root.title('Pack方法')
root.geometry('600x600+300+100')
Frame(root,bg='red',width=100).pack(side='left',fill='y',expand='no')
Frame(root,bg='yellow',height=100).pack(side='top',fill='x')
Frame(root,bg='green').pack(expand=1,fill='both')
root.mainloop()

【运行效果】

二、Place方法

【Place方法官方原文:place manual page - Built-In Commands

【参数说明】

image.png【1】该参数不常用,要参考的可以看一下官方说明:


(我就不翻译了,嘻嘻,主要是没看太懂,有懂的可以在评论区说一下哦!)


-bordermode mode


whether to take border width of master widget into account


Mode determines the degree to which borders within the container are used in determining the placement of the content. The default and most common value is inside. In this case the placer considers the area of the container to be the innermost area of the container, inside any border: an option of -x 0 corresponds to an x-coordinate just inside the border and an option of -relwidth 1.0 means window will fill the area inside the container's border.


If mode is outside then the placer considers the area of the container to include its border; this mode is typically used when placing window outside its container, as with the options -x 0 -y 0 -anchor ne. Lastly, mode may be specified as ignore, in which case borders are ignored: the area of the container is considered to be its official X area, which includes any internal border but no external border. A bordermode of ignore is probably not very useful.

【相关方法】image.png【代码示例】

from tkinter import *
root = Tk()
root.title('Place方法')
root.geometry('600x600+300+100')
Frame(root,bg='red').place(width=450,height=150)
Frame(root,bg='yellow').place(width=150,height=450,x=450)
Frame(root,bg='blue').place(width=450,height=150,x=150,y=450)
Frame(root,bg='green').place(width=150,height=450,y=150)
root.mainloop()

【运行效果】

三、Grid方法

【Grid方法官方原文:grid manual page - Tk Built-In Commands

【参数说明】

image.png

【相关方法】image.pngimage.png【代码示例】

from tkinter import *
root = Tk()
root.title('Grid方法')
root.geometry('600x600+300+100')
Frame(root,bg='red',width=300,height=300).grid(column=0,row=0)
Frame(root,bg='yellow',width=300,height=300).grid(column=0,row=1)
Frame(root,bg='blue',width=300,height=300).grid(column=1,row=0)
Frame(root,bg='green',width=300,height=300).grid(column=1,row=1)
root.mainloop()

【运行效果】


【总结一下】

Pack方法比较简单,可以解决不是非常复杂的图形化界面,但是它只能单一地放置,对于网格化的图形化界面,用Pack就比较繁琐;


Place方法十分精确,它要求了很多参数,能够轻松胜任复杂的图形化界面,但是缺陷也很明显,窗口放大或缩小,Place管理的控件并不能随之改变大小及位置;


Grid方法就是网格,字面意思嘛,它能够很好地应付网格化的图形化界面,但对于复杂且规律不明显的界面而言,Grid方法就显得不太行了;


各有各的优缺点,对于不同的程序我们应该选用合适的几何布局管理器,但是给个小建议,尽量不要在同一个程序中使用不同的几何布局管理器,那样容易把自己弄晕,且代码看起来不清晰。我呢,就比较喜欢用Place了,精确控制控件的大小及位置不就和我们小时候搭积木一样吗?简单容易,就是这个位置坐标有点“费头发”......

目录
相关文章
|
26天前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
43 3
|
14天前
|
安全
Python-打印99乘法表的两种方法
本文详细介绍了两种实现99乘法表的方法:使用`while`循环和`for`循环。每种方法都包括了步骤解析、代码演示及优缺点分析。文章旨在帮助编程初学者理解和掌握循环结构的应用,内容通俗易懂,适合编程新手阅读。博主表示欢迎读者反馈,共同进步。
|
21天前
|
JSON 安全 API
Python调用API接口的方法
Python调用API接口的方法
93 5
|
1月前
|
算法 决策智能 Python
Python中解决TSP的方法
旅行商问题(TSP)是寻找最短路径,使旅行商能访问每个城市一次并返回起点的经典优化问题。本文介绍使用Python的`ortools`库解决TSP的方法,通过定义城市间的距离矩阵,调用库函数计算最优路径,并打印结果。此方法适用于小规模问题,对于大规模或特定需求,需深入了解算法原理及定制策略。
38 15
|
28天前
|
机器学习/深度学习 人工智能 算法
强化学习在游戏AI中的应用,从基本原理、优势、应用场景到具体实现方法,以及Python在其中的作用
本文探讨了强化学习在游戏AI中的应用,从基本原理、优势、应用场景到具体实现方法,以及Python在其中的作用,通过案例分析展示了其潜力,并讨论了面临的挑战及未来发展趋势。强化学习正为游戏AI带来新的可能性。
80 4
|
数据库连接 数据库 Python
Python上下文管理器详解
Python上下文管理器详解
125 0
|
Python
一文搞懂Python上下文管理器
一文搞懂Python上下文管理器
106 0
|
Python
python上下文管理器细读
今天讲python上下文管理器细读
110 0
|
Java 关系型数据库 MySQL
Python高级语法5:私有属性、魔法属性、with与上下文管理器
Python高级语法5:私有属性、魔法属性、with与上下文管理器
212 0
|
语音技术 Python
Python - Context Manager 上下文管理器
Python - Context Manager 上下文管理器
126 0

热门文章

最新文章